批量照片时间处理

之前处理nas上的照片,由于不小心在cp的时候没有带上原始时间,导致新文件夹里的照片时间都是当前时间的,由于文件名也不是从小到大的,所以需要统一处理一下。

首先我们要知道cp是可以带上原始的信息

1
2
3
4
5
6
7
cp -p src dst

#注释
-p same as --preserve=mode,ownership,timestamps
-a --archive same as -dR --preserve=all

#这里我们可以看到加上-a也是可以的。

我们看到如果加上-p/-a的话就是把权限,属组,时间这些信息都带上了。不过向我这样的就只能另外处理了。

由于是照片,所以理论上exif信息里有时间的,所以其实就是从exif信息里取出对应照片的创建时间,然后重新刷一下照片的mtime就行了。

1
2
3
4
5
while read line
do
DAY=`./exiftool $line | grep 'Create Date' | head -n1 | awk '{print $4" "$5}' | awk -F':' '{print $1"-"$2"-"$3":"$4":"$5}'`
touch -m -d "$DAY" $line
done<jpg.txt

exiftool本身是一个perl的工具,建议还是通过yum和apt来安装,本来想自己编译安装,发现依赖了很多perl库,通过cpan来安装,这都是属于原始技能了。
这里exiftool不光能读各种照片的信息,也能读视频的信息,所以可以一起处理。就是每种格式的信息格式都不一样,所以我这里是一种中格式分别来处理的。