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