在exiftool -if条件下使用变量

时间:2018-05-24 13:40:38

标签: exiftool

我正在尝试根据IPTC元数据中找到的关键字重新组织图像。更具体地说,我需要根据subject的{​​{1}}伪标签中的种类名称将图像排序到目录中。

为此,我在exiftool文件(species_ls.txt)中编译了关键字,每个关键字都在新行上,如下:

.txt

要对图像进行排序,我创建了以下for循环,循环遍历文档的每一行,Asian Tortoise Banded Civet Banded Linsang ...拉出关键字。这里,sed$line_no文件中的行数,species_ls.txt是包含图像的目录。

image_raw

虽然for循环运行,但for i in 'seq 1 $line_no'; do sp_name=$(sed -n "${i}p" < species_ls.txt) exiftool -r -if '$subject=~/${sp_name}/i' \ '-Filename=./${sp_dir}/%f%+c%E' image_raw` 中的-if标志中没有满足任何条件。我假设这是因为变量exiftool未正确传递到条件中。

任何建议或更好的方法都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

对于有条件的行,而不是使用单引号(' '),最好使用双引号(" ")。

单引号表示内容按字面传递,这意味着您的变量不会被扩展。

要克服,$ subject行扩展(我认为你不想要),你可以在\前放一个$来逃避它被读作变量。

此行现在应如下所示:

exiftool -r -if "\$subject=~/${sp_name}/i"

希望这能帮到你!