首页 > 解决方案 > 使用 exiftool 进行反向匹配

问题描述

我正在根据subject伪标签中的内容对图片进行排序exiftool,通常看起来像这样:

15: D101-5-12 1: Elephas maximus 16: Bob

通常我根据第二行中的物种名称对图像进行排序,但是,对于某些图像,第二行丢失了,我想过滤掉这些图像。

图片之间的第一行和第三行差异很大,所以我无法使用这些。相反,我一直在尝试围绕该主题的其他问题提出的各种“反向匹配”方法,但没有成功。例如,以下内容不起作用:

exiftool -r -if '\$subject=~/^((?!1:\s).)*$/i' \
'-Filename=./image_sorted/%f%+c%E' image_directory

关于如何做到这一点的任何想法exiftool

标签: bashexiftool

解决方案


现在我意识到您所有的物种关键字都以 开头1:,我想我可以为您制作一个更好的多合一命令。

exiftool -r '-Filename=./image_sorted/%f%+c%E' '-Filename<./${Subject;$_=undef if not s/.*(?:^|, )1: (.*?)(,|$).*/$1/}/%f%+c%E' ./image_directory/

此命令会将没有以 开头的关键字的任何文件移动1:image_sorted目录中。如果它确实有一个以 开头的关键字,1:它将根据物种名称将其移动到目录中,这将覆盖先前的选项以将其移动到image_sorted目录中。

此命令将为任何没有设置关键字的文件抛出一个Warning: [minor] Tag 'Subject' not defined和一个警告。这些可以安全地忽略,您可以通过添加选项完全避免它们。Warning: No writable tags set1: Species Name-m


推荐阅读