用 exiftool 按拍摄时间整理照片
手机、相机、家里人转过来的照片混在一个文件夹里,文件名五花八门:IMG_ 开头的、DSC_ 开头的、聊天软件导出的一串数字。想统一成按拍摄时间命名,这样排序自然就对了。
基本用法
exiftool '-FileName<DateTimeOriginal' \
-d '%Y%m%d_%H%M%S%%-c.%%le' \
-r ./photos
-d设定日期格式;%%-c在重名时自动加-1、-2,连拍的照片不会互相覆盖。%%le是小写的原扩展名,.JPG和.jpg顺便统一了。-r递归处理子目录。
上面这条会直接改名。稳妥的做法是先把 FileName 换成 TestName 跑一遍,只打印结果,不动文件:
exiftool '-TestName<DateTimeOriginal' -d '%Y%m%d_%H%M%S%%-c.%%le' -r ./photos
没有拍摄时间的文件
截图和转存的图常常没有 DateTimeOriginal。exiftool 的规则是后面的赋值覆盖前面的,所以兜底的写在前面:
exiftool '-FileName<FileModifyDate' '-FileName<CreateDate' \
'-FileName<DateTimeOriginal' \
-d '%Y%m%d_%H%M%S%%-c.%%le' -r ./photos
有拍摄时间就用拍摄时间,没有就退到创建时间,再没有就用文件修改时间。最后一种不太可靠,跑完我会把这类文件挑出来人工看一眼。
顺手按月份分目录
exiftool '-Directory<DateTimeOriginal' -d './sorted/%Y/%m' -r ./photos
改名和分目录可以合成一条命令,不过我更喜欢分两步做,每一步都能单独检查。
macOS 上用 Homebrew 装一下就有。动手之前先把整个文件夹完整备份一份,这一条比上面所有命令都重要。