여러 파일의 인수를 단일 명령으로 전달하는 방법은 무엇입니까?

여러 파일의 인수를 단일 명령으로 전달하는 방법은 무엇입니까?

이미지에 텍스트 주석을 추가하기 위해 변환 명령을 사용하고 있습니다.

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 파일의 텍스트 줄을 추가하려면 어떻게 해야 합니까? 명확히 하자면, 나는 그것들이 고유하기를 원합니다. 동일한 텍스트로 주석이 달린 이미지가 두 개 이상 있어서는 안 됩니다. 저는 쉘 스크립팅을 처음 접했고 어디서부터 시작해야 할지조차 모릅니다.

답변1

요청을 올바르게 이해하면 다음과 같을 수 있습니다(POSIX sh구문).

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.

관련 정보