与exiftool进行反向匹配

时间:2018-05-25 10:05:19

标签: bash exiftool

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

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 执行此操作的任何想法?

1 个答案:

答案 0 :(得分:1)

现在我意识到你所有的物种关键词都以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选项完全避免它们。