如何将多个文件中的参数传递给单个命令?

如何将多个文件中的参数传递给单个命令?

我正在使用转换命令用文本注释图像:

convert -pointsize 20 -fill green -draw 'text 270,460 "[TEXT TO ANNOTATE]" ' [INPUT IMAGE NAME].jpg [OUTPUT IMAGE NAME].jpg

我有 100 张图像和一个包含 100 个唯一单词的 .txt 文件,每个单词各占一行。如何才能使 100 张图像中的每一张都使用 .txt 文件的一行文本进行注释?为了澄清,我希望它们是独一无二的 - 不应该有超过一张用相同文本注释的图像。我是 shell 脚本新手,甚至不知道从哪里开始。

答案1

如果我正确理解该请求,可能是(POSIXsh语法):

for file in ./*.[jJ][pP][gG]; do
  IFS= read -r text <&3 || break
  convert -pointsize 20 \
          -fill green \
          -draw "text 270,460 \"$text\"" \
          "$file" "${file%.*}-annotated.${file##*.}"
done 3< /path/to/list.txt

(假设 的行中没有双引号list.txt)。

.jpg按字母顺序处理当前目录中的所有(不区分大小写)文件,并且对于每个文件,从 读取一行文本list.txt,用该行中的文本对 jpg 进行注释并保存为original-annotated.jpg.

相关内容