我根据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
执行此操作的任何想法?
答案 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 set
和1: Species Name
警告。这些可以安全地忽略,您可以通过添加-m
选项完全避免它们。