Обратное сопоставление с exiftool - PullRequest
0 голосов
/ 25 мая 2018

Я сортирую изображения на основе содержимого в псевдотеге 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 Ответ

0 голосов
/ 25 мая 2018

Теперь, когда я понимаю, что все ваши ключевые слова вида начинаются с 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.

...