`xargs`는 STDIN의 옵션을 어디에 추가합니까?

`xargs`는 STDIN의 옵션을 어디에 추가합니까?

몇 가지 이유로 인해 옵션 순서가 명령에 중요합니다. 예를 들어 옵션 순서가 다르면 에서 작업이 달라질 수 있으므로 에서 옵션을 추가하는 ffmpeg위치는 어디입니까 ?xargsstdin

예를 들어:

$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24

다음과 완전히 동일합니다.

$ ffmpeg -i inpit.avi -r 24 output.avi

하지만 파이프 input.avi로 전송하려는 경우 STDIN의 문자열을 지정된 위치로 어떻게 설정합니까?echoxargs ffmpeg -i -r 24 output.avi

답변1

내가 당신을 따르고 있는지 완전히 확신할 수는 없지만 xargs인수가 전달될 때 위치를 제어할 수 있는 방법을 묻는 경우 스위치를 사용하여 -I{}붙여넣은 입력에 사용할 매크로를 지정한 xargs다음 사용할 수 있습니다. 확장된 항목을 전달하려는 곳에 이 매크로가 있습니다 xargs.

메모:{}나는 매크로에 대한 표기법을 사용하고 있으며 인수를 확장하려는 위치에 해당 매크로를 간단히 배치합니다.

$ echo hi | xargs -I{} echo {}
hi

$ echo hi | xargs -I{} echo {} {}
hi hi

$ echo hi | xargs -I{} echo {} {} bye
hi hi bye
xargs 매뉴얼 페이지에서 발췌
   -I replace-str
      Replace  occurrences of replace-str in the initial-arguments with 
      names read from standard input.  Also, unquoted blanks do not 
      terminate input items; instead the separator is the newline 
      character.  Implies -x and -L 1.

관련 정보