在 Mac 过滤掉具有不同 exif 日期的照片

filter out photos with different exif date on Mac

我正在寻找一种在 macOS 上过滤掉创建日期与 exif 照片日期不匹配的照片的方法。 执行此操作的最佳工具是什么?

我不是 exiftool 方面的专家,但我认为我已经得到了您想要的 90% 的东西。我正在逐步编写它以便:

  • 如果不完全是你的意思,你可以修改它,并且
  • 这样我就可以记住我以后做了什么:-)

所以第一件事就是使用exiftool获取所有与日期相关的东西:

exiftool image.jpg | grep -i date

File Modification Date/Time     : 2021:01:14 10:51:38+00:00
File Access Date/Time           : 2021:01:14 10:51:40+00:00
File Inode Change Date/Time     : 2021:01:14 10:51:38+00:00
Modify Date                     : 2013:03:09 08:59:50
Date/Time Original              : 2013:03:09 08:59:50
Create Date                     : 2013:03:09 08:59:50

这看起来很有用,但在内部 exiftool 使用 Perl 变量作为 fields/tags,我想获取变量名称以便进行比较他们稍后,所以我添加了 -s:

exiftool -s image.jpg | grep -i date

FileModifyDate                  : 2021:01:14 10:51:38+00:00
FileAccessDate                  : 2021:01:14 10:51:40+00:00
FileInodeChangeDate             : 2021:01:14 10:51:38+00:00
ModifyDate                      : 2013:03:09 08:59:50
DateTimeOriginal                : 2013:03:09 08:59:50
CreateDate                      : 2013:03:09 08:59:50

好的,我想你想要 FileModifyDateDateTimeOriginal,让我们看看是否可以打印它们:

exiftool -p '$Filename, $FileModifyDate, $DateTimeOriginal'  image.jpg

image.jpg, 2021:01:14 10:51:38+00:00, 2013:03:09 08:59:50

请注意,您 必须 在 macOS/Linux 上使用单引号,否则 bash shell 会尝试扩展变量,但它会扩展为空 -除非你碰巧有一个名为 DateTimeOriginalbash 变量。我猜你必须在 Windows 上使用双引号,因为它通常不理解单引号。


很好,但您对小时、分钟和秒不感兴趣,因此我们可以更改 exiftool 考虑日期的方式,仅查看年、月和日 -d:

exiftool -d %F -p '$Filename, $FileModifyDate, $DateTimeOriginal'  image.jpg 

image.jpg, 2021-01-14, 2013-03-09

现在我们想用 if 语句检查它们是否相同(对于所有 JPEG 文件)并且只打印 "unhappy" 文件:

exiftool -d %F -if '$FileModifyDate !~ $DateTimeOriginal' -p '$FileName' *.jpg

image.jpg
iphone.jpg
2 files failed condition

如果您对这样的 Perl 字符串比较感到隐约不安,您可以像这样使用 awk 进行测试和打印:

exiftool -d %F -p '$Filename, $FileModifyDate, $DateTimeOriginal' *.jpg | awk -F, ' != {print }'

注意上面只执行一个exiftool进程。我想你可能想避免 运行 对每个文件 exiftool 一个全新的过程,所以不要这样做:

find ... -iname "*.jpg" -exec exiftool ... {} \;

我认为您可以使用 -r 递归到子目录,但我还没有尝试过。


顺便说一下,在 macOS 上,您可以使用 homebrew:

最简单地安装 exiftool
brew install exiftool

关键字:exiftool,创建日期。修改日期, EXIF 日期, 匹配, 不匹配, 照片, 照片, prime.