Обратное сопоставление с 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?

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 вариант.

Другие вопросы по тегам