Answers:
好的,这是我放在一起的东西:
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
[[ ${i} =~ '^[0-9]+$' ]] && SLIDESHOW_OPS="-D${i} --fullscreen" || TAGS+="${i}\|"
done
exiftool -ext .JPG -fast -p '$directory/$filename;$Keywords' -qq -r -m . 2> /dev/null | grep -i "\;.*${TAGS: : -2}" | sed 's/\;.*//' > /tmp/imglist.txt
feh ${SLIDESHOW_OPS} --auto-zoom --filelist /tmp/imglist.txt
rm -fv /tmp/imglist.txt
}
进入目录,并像这样调用它:
px-image-tag-viewer holidays sigma horiz 5
标签用空格分隔,幻灯片显示的可选秒数。
您可以实现您的需求 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
用于控制输出格式的选项。