我正在尝试根据图像中的物种重新组织图像。在其他信息中,物种名称可以在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
有什么想法可以解决这个问题?先感谢您。
答案 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有类似的话。