在bash中基于IPTC元数据移动图像

时间:2018-05-21 12:51:48

标签: bash grep metadata xargs exiftool

我正在尝试根据图像中的物种重新组织图像。在其他信息中,物种名称可以在IPTC元数据中找到(参见Inspector image的链接)。我试图在macOS上使用bash执行此操作并尝试使用以下代码(使用模板种类名称和目录):

headers

我还尝试使用find . -iname "*.jpg" -print0 | xargs -0 grep -l "Species Name" | xargs -0 -I {} mv {} ~/example/directory 包,其中相关信息位于Subject标记中:

exiftool

但是,我收到以下错误消息,我认为这是因误用find . -iname "*.jpg" -print0 | xargs -0 exiftool -Subject | grep "Species Name" | xargs -0 -I {} mv {} ~/example/directory或上一次grep而导致的:

xargs

有什么想法可以解决这个问题?先感谢您。

2 个答案:

答案 0 :(得分:4)

Exiftool可以根据文件元数据移动和重命名文件,对于整个目录调用一次比为循环中的每个文件单独调用它更快(Common Mistake #3)。

我相信您可以使用此命令进行排序:
exiftool -if '$subject=~/Species Name/i' -directory=~/example/directory .

击穿:
-if '$subject=~/Species Name/i'对“物种名称”的Subject标记进行正则表达式比较。我在末尾添加了i以不敏感地进行比较,根据需要进行修改 -directory=~/example/directory如果满足-if条件,则文件将被移动到指定的目录。

答案 1 :(得分:1)

看起来grep的输出换行符正在干扰那里,因为你正在使用干净的-0管道,你应该使用grep - 在Linux中它将{ {1}}(或grep -Z ...),dunno,如果Mac OS有类似的话。