중괄호와 리눅스에서 xargs 사이에 차이점은 무엇입니까?


19

나는 이것의 차이점이 무엇인지 알고 싶다

ls | xargs rm

ls | xargs -i{} rm {}

둘 다 나를 위해 일하고있다

답변:


19

xargs rmrm공백으로 떠난 매개 변수로 모든 인수를 호출 합니다.

xargs -i{} rm {}rm {}각 인수마다 호출 {}되며 현재 인수로 대체됩니다.

당신은 2 인자가있는 경우 a.txtb.txt, xargs rm 이를 호출합니다

rm a.txt b.txt

하지만 xargs -i{} rm {}전화

rm a.txt
rm b.txt

-i옵션 은 옵션을 의미 하기 때문에 -L 1명령 rm1매번 줄만 사용합니다. 그리고 여기 각 줄에는 하나의 인수 만 있습니다.

이에 대한 더 많은 정보를 얻으려면 이 Ideone 링크 를 확인하십시오 .


어느 것이 더

1
@ user19140477031은 수행중인 작업에 따라 다릅니다. 에 대한 rm문제가되지 않습니다
Shiplu Mokaddim에게

3

중괄호를 사용하면 rm파일 당 하나의 프로세스 가 생성 됩니다. 중괄호가 없으면 xargs가능한 한 많은 파일 이름을 각 rm명령에 전달합니다.

비교

ls | xargs echo

ls | xargs -i echo '{}'

2

-i 옵션 (--replace와 동일)은 xargs가 방금 수신 한 입력을 저장하는 일종의 자리 표시자를 만듭니다. 두 번째 명령에서 자리 표시자는 "{}"이며 find -exec 옵션처럼 작동합니다. 일단 정의되면 xargs는이 자리 표시자를 전체 입력 줄로 바꿉니다. "{}"이름이 마음에 들지 않으면 직접 정의 할 수 있습니다.

LS | xargs -iPLACEHOLDER 에코 PLACEHOLDER

귀하의 경우 두 명령 모두 동일한 결과를 생성합니다. 두 번째 양식에서는 -i 옵션을 사용하여 기본 동작을 명시 적으로 지정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.