我正在尝试根据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
未正确传递到条件中。
任何建议或更好的方法都会受到赞赏。
答案 0 :(得分:1)
对于有条件的行,而不是使用单引号(' '
),最好使用双引号(" "
)。
单引号表示内容按字面传递,这意味着您的变量不会被扩展。
要克服,$ subject行扩展(我认为你不想要),你可以在\
前放一个$
来逃避它被读作变量。
此行现在应如下所示:
exiftool -r -if "\$subject=~/${sp_name}/i"
希望这能帮到你!