mac上用automator批量重命名照片需分两路:系统原生支持直接提取拍摄日期(datetimeoriginal)并自定义格式;扩展元数据则需配合exiftool与shell脚本读取相机型号等字段,再通过过滤动作限定图像文件、规避命名冲突。

Mac 上用 Automator 批量重命名照片,核心是把 EXIF 元数据(比如拍摄时间、相机型号)从文件里“读出来”,再“塞进新文件名”。它本身不直接解析 EXIF,而是靠系统级支持或调用命令行工具来实现这一逻辑。
系统原生支持:直接读取拍摄日期
macOS 内置的“重命名 Finder 项目”动作中,有一个选项叫“添加日期或时间”,下拉菜单里能选“拍摄日期”。这是最简方式——系统自动调用底层图像框架(ImageIO/Photos Framework)提取 JPEG、HEIC、RAW 等常见格式中的 DateTimeOriginal 字段。选中后,你还能自定义格式,例如:
• yyyy-mm-dd_hhmmss → 2024-05-15_142045
• yyyyMMdd_HHmm → 20240515_1420
注意:如果照片没带拍摄时间(如截图、导出图、部分手机截屏),系统会退而使用“创建日期”或“修改日期”,结果可能不准确。
扩展元数据:用 exiftool + Shell 脚本组合
想用相机型号、镜头、GPS 地址等更细的信息?Automator 需借助第三方工具 exiftool。操作逻辑分三步:
• 先安装 exiftool:brew install exiftool(需 Homebrew)
• 在 Automator 中插入“执行 shell 脚本”动作,传入选中文件路径
• 脚本示例:
for f in "$@"; do
model=$(exiftool -s -Model "$f" | awk -F': ' '{print }' | sed 's/ //g')
datetime=$(exiftool -s -DateTimeOriginal "$f" | awk -F': ' '{print }' | sed 's/[-:]//g' | cut -c1-12)
echo "${datetime}_${model}_$(basename "$f")"
done
• 再把“重命名 Finder 项目”设为“使名称成为”,模板填 $1(代表上一步脚本输出的每一行)
确保只处理照片,避免误伤
照片重命名必须加过滤,否则 PDF、视频、文件夹也会被卷进来:
• 拖入“过滤 Finder 项目”动作,条件设为:
– “种类” 是 “图像”
– 或 “文件名” 结尾是 “.jpg”、“.jpeg”、“.heic”、“.png”(可多条并列)
• 如果工作流类型是“服务”,顶部设置“服务收到图像文件”,这步还能进一步限定输入源。
命名冲突与安全机制
EXIF 时间戳精度有限(秒级),同一秒拍多张图就会重名。应对逻辑包括:
• 勾选“重命名 Finder 项目”里的“创建副本”,保留原文件
• 在模板中叠加序列号,例如:拍摄日期_序号_相机型号
• 或先在 Finder 中按“拍摄日期”排序,再运行“插入序列号”规则,保证编号顺序合理
• 所有操作默认跳过只读文件,失败项会单独提示,不影响其余文件











