如何通过exif标签递归列出图像?


0

我有一个目录充满了图像的目录,所有目录都有各种“关键字”标签。我怎么能(在Linux shell中)列表 所有 包含的图像 keyword1 和/或 keyword2


1
在Windows,Linux,MacOS X,BeOS,Plan 9,Minix,Android,IOS,Coffee Machine?
mtak

Answers:


0

好的,这是我放在一起的东西:

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

标签用空格分隔,幻灯片显示的可选秒数。


0

您可以实现您的需求 exiftool 单独使用它 -if 条件语法和 -p 打印输出标志如下:

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

这会递归扫描当前目录,使用关键字上的正则表达式匹配,打印出其文件名。这或多或少都与你有关 grepsed,但只使用 exiftool 单独。你得到更多的力量,因为 -if 表达式类似于Perl,可以做的不仅仅是字符串匹配(例如 gtlt 和其他Perl运营商)。

调整或删除 -ext JPG 检查其他文件格式是否符合要求(不区分大小写),同样调整 -p 用于控制输出格式的选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.