与 exiftool 反向匹配
Inverse matching with exiftool
我根据exiftool
的subject
伪标签中的内容对图片进行排序,一般是这样的:
15: D101-5-12 1: Elephas maximus 16: Bob
通常我会根据第二行的物种名称对图像进行排序,但是,对于某些图像,第二行丢失了,我想过滤掉这些图像。
图片之间的第一行和第三行差异很大,所以我无法利用这些。相反,我一直在尝试针对围绕该主题的其他问题建议的各种 'inverse matching' 方法,但没有成功。例如,以下不起作用:
exiftool -r -if '$subject=~/^((?!1:\s).)*$/i' \
'-Filename=./image_sorted/%f%+c%E' image_directory
关于如何使用 exiftool
执行此操作的任何想法?
既然我知道你所有的物种关键字都以 1:
开头,我想我可以为你做一个更好的命令。
exiftool -r '-Filename=./image_sorted/%f%+c%E' '-Filename<./${Subject;$_=undef if not s/.*(?:^|, )1: (.*?)(,|$).*//}/%f%+c%E' ./image_directory/
此命令会将任何没有以 1:
开头的关键字的文件移动到 image_sorted
目录中。如果它确实有一个以 1:
开头的关键字,它将根据物种名称将其移动到一个目录中,这将覆盖先前的选项以将其移动到 image_sorted
目录中。
此命令将对任何未设置 1: Species Name
关键字的文件发出 Warning: [minor] Tag 'Subject' not defined
和 Warning: No writable tags set
警告。这些可以安全地忽略,您可以通过添加 -m
选项完全避免它们。
我根据exiftool
的subject
伪标签中的内容对图片进行排序,一般是这样的:
15: D101-5-12 1: Elephas maximus 16: Bob
通常我会根据第二行的物种名称对图像进行排序,但是,对于某些图像,第二行丢失了,我想过滤掉这些图像。
图片之间的第一行和第三行差异很大,所以我无法利用这些。相反,我一直在尝试针对围绕该主题的其他问题建议的各种 'inverse matching' 方法,但没有成功。例如,以下不起作用:
exiftool -r -if '$subject=~/^((?!1:\s).)*$/i' \
'-Filename=./image_sorted/%f%+c%E' image_directory
关于如何使用 exiftool
执行此操作的任何想法?
既然我知道你所有的物种关键字都以 1:
开头,我想我可以为你做一个更好的命令。
exiftool -r '-Filename=./image_sorted/%f%+c%E' '-Filename<./${Subject;$_=undef if not s/.*(?:^|, )1: (.*?)(,|$).*//}/%f%+c%E' ./image_directory/
此命令会将任何没有以 1:
开头的关键字的文件移动到 image_sorted
目录中。如果它确实有一个以 1:
开头的关键字,它将根据物种名称将其移动到一个目录中,这将覆盖先前的选项以将其移动到 image_sorted
目录中。
此命令将对任何未设置 1: Species Name
关键字的文件发出 Warning: [minor] Tag 'Subject' not defined
和 Warning: No writable tags set
警告。这些可以安全地忽略,您可以通过添加 -m
选项完全避免它们。