xargs -I를 사용하여 실행 횟수를 줄이는 방법

xargs -I를 사용하여 실행 횟수를 줄이는 방법

find명령에는 특정 xargs작업 스타일을 수행하는 두 가지 방법이 있습니다.

find foo -exec bar '{}' baz ';'
find foo -exec bar '{}' baz '+'

차이점은 첫 번째는 발견된 각 파일을 한 번 실행하고 두 번째는 파일을 그룹화하여 실행 횟수를 줄이는 것입니다.

내가 볼 때 xargs다음과 같은 스위치가 있습니다 -I.

xargs -I{} foo bar {} baz

이 작업은 각 매개변수에 대해 한 번씩 수행됩니다.

질문: 에서 실행 xargs횟수를 줄이는 방법이 있습니까 find?

나는 이런 일을하고 싶다 :

xargs -I{} echo start {} end << EOF
hello
world
EOF

결과를 얻으십시오 :

start hello world end

아니요:

start hello end
start world end

답변1

이를 수행하는 유일한 방법은 명령에 대한 간단한 래퍼 스크립트를 만드는 것입니다.

#!/bin/sh
echo start "$@" end

그럼 당신은 사용할 수 있습니다xargs echo-wrapper

물론 이 작업을 인라인으로 수행할 수도 있습니다.

xargs sh -c 'echo start "$@" end' sh <<EOF
hello 
world
EOF

sh마지막에 추가 내용을 참고하세요. 이는 sh -c쉘에서 내부적으로 지정하는 구문의 일부입니다.$0

관련 정보