Как рекурсивно вывести список изображений по тегу exif?

297
yPhil

У меня есть каталог, полный каталогов с изображениями, все с различными тегами «ключевых слов». Как я могу (в оболочке Linux) перечислить все изображения, содержащие keyword1и / или keyword2?

0
В Windows, Linux, MacOS X, BeOS, Plan 9, Minix, Android, IOS, кофеварке? mtak 7 лет назад 1

2 ответа на вопрос

0
yPhil

Хорошо, вот что я собрал:

exiftool -ext .JPG -fast -p '$directory/$filename;$Keywords' -qq -r -m . 2> /dev/null | grep -i '\;.*keyword1\|keyword2\|keyword3' | sed 's/\;.*//' 

Это создаст чистый список всех имен файлов, содержащих любое из ключевых слов, из которых вы можете указать столько, сколько захотите; Затем вы можете передать его зрителю для создания галереи / слайд-шоу на лету, как в этой последней функции:

px-image-tag-viewer () { TAGS= SLIDESHOW_OPS= for i in ${*}; do [[ $ =~ '^[0-9]+$' ]] && SLIDESHOW_OPS="-D$ --fullscreen" || TAGS+="$\|" done  exiftool -ext .JPG -fast -p '$directory/$filename;$Keywords' -qq -r -m . 2> /dev/null | grep -i "\;.*$" | sed 's/\;.*//' > /tmp/imglist.txt  feh $ --auto-zoom --filelist /tmp/imglist.txt rm -fv /tmp/imglist.txt } 

Зайдите в каталог и вызовите его так:

px-image-tag-viewer holidays sigma horiz 5 

С тегами, разделенными пробелами, и необязательным количеством секунд для слайд-шоу.

0
davidjb

Вы можете достичь того, что вам нужно, в exiftoolодиночку, используя его -ifусловный синтаксис и -pфлаг вывода на печать следующим образом:

exiftool -ext JPG -if '$Keywords =~ /(keyword1|keyword2)/' -p '$directory/$filename' -r . 

Это рекурсивно сканирует текущий каталог, используя совпадение регулярных выражений по ключевым словам, распечатывая их имена файлов. Это более или менее то, что вы имеете с grepи sed, но используя только в exiftoolодиночку. Вы получаете больше возможностей, потому что -ifвыражение является Perl-подобным и может делать больше, чем просто сопоставление строк (например gt, ltи другие операторы Perl).

Отрегулируйте или удалите -ext JPGпроверку, как требуется (без учета регистра) для других форматов файлов, а также настройте -pпараметр для управления форматированием вывода.

Похожие вопросы