이 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