如何根据文件名更新 exif 日期时间原始



我想使用Google相册分享10K照片。 这些图像是已扫描,因此他们没有正确的日期时间原始时间进行时间顺序排序。

我需要将 DateTimeOriginal 更新为 YYYY:01:01 00:00:00,以便我在 Google 相册中组织这些内容以进行共享并有一定的秩序感。 我的理解是谷歌使用exif DateTimeOriginal进行排序。

我的照片命名约定:

1967 Smith G & J Wedding - 3.jpg

1962 史密斯家庭团聚 - 87.jpeg

1990 史密斯 50 周年 - 16.jpeg

我试过这个:

exiftool "-datetimeoriginal < ${filename;$_=substr($_,0,3)} 01:01 12:00:00" DIR

但收到 BASH"错误替换错误"

任何协助将不胜感激。

可能有更好的方法,但这有效:

#!/bin/bash
for f in *.jpg; do
   year=$(grep -Eo "^d+" <<< "$f")
   echo File: $f, setting year:$year
   exiftool "-datetimeoriginal=${year}01:01 12:00:00" "$f"
done

调试输出

File: 2013 Family Reunion.jpg, setting year:2013
    1 image files updated
File: 2017 Some wedding.jpg, setting year:2017
    1 image files updated

在临时目录中的文件副本上尝试一下!

你和原来的很接近,但正如@Grinnz所说,你需要使用单引号。 此外,你想要今年的前 4 个数字,但你只抓住了 3。

所以试试:
exiftool '-DateTimeOriginal<${filename;$_=substr($_,0,4)} 01:01 12:00:00' FileOrDir

exiftool 的启动时间是其对性能的最大影响,因此您会发现这比循环访问每个文件要快得多(请参阅 exiftool 常见错误 #3)。

此命令创建备份文件。 添加-overwrite_original以禁止创建备份文件。 将递归-r添加到子目录中。

最新更新