複数のファイルの引数を単一のコマンドとして渡すには?

複数のファイルの引数を単一のコマンドとして渡すには?

私は画像にテキストコメントを追加するために変換コマンドを使用しています。

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

100個の画像と100個の固有の単語を含む.txtファイルがあります。各単語は1行に1つずつあります。 100個の画像のそれぞれに.txtファイルのテキスト行を追加するにはどうすればよいですか?明らかに、私は彼らがユニークであることを望みます。同じテキストで注釈付きの画像が複数あることはできません。私はシェルスクリプトに初めて触れ、どこから始めるべきかさえ知りません。

ベストアンサー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現在のディレクトリ内のすべての(大文字と小文字の区別)ファイルをアルファベット順に処理し、各ファイルのテキストを1行読み、その行のテキストとしてlist.txtjpgにコメントを追加しますoriginal-annotated.jpg

おすすめ記事