汇总了来自几个人一起旅行所拍摄的所有照片之后遇到的一个问题就是,不同设备的命名方式不同,或者相同的话就可能会有照片文件重名的问题。这样非常不利于浏览挑选照片。所以就想将所有的照片重新命名一下。命名的规则就是 __。这些信息可以通过提取照片的 EXIF 信息得到。当然手工重命名上千张照片是难以完成的,于是就有了下面的批处理代码。
我个人对于命令行的批处理是非常不熟悉的,仅仅是知道有这么个东西。在查阅了一些博文(ref1, ref2, ref3)后终于能够顺利完成这个工作了。只是代码质量可能就不堪入目了,仅仅是凑合能用。
提取 EXIF 信息
因为用的是 Linux(openSUSE Tumbleweed),这方面的工具真的是很齐全。比如 ref1 中提到的 jhead,ref2 中提到的 ImageMagick 中的 identify 等。我所用的系统中刚好默认就安装了 ImageMagick,于是用 identify 试了试,
# identify -verbose IMG_5045.JPG | grep "DateTime"
exif:DateTime: 2016:09:07 11:17:39
exif:DateTimeDigitized: 2016:09:07 11:17:39
exif:DateTimeOriginal: 2016:09:07 11:17:39
出现了 3 条信息,而我们只需要 1 条。于是就修改一下指令,
# identify -verbose IMG_5045.JPG | grep "DateTimeOriginal"
exif:DateTimeOriginal: 2016:09:07 11:17:39
下面要做的就是把返回结果中的日期时间提取出来,改成 20160907_1117