이것이 더 빠른가요?
find /tmp -name core -type f | xargs /bin/rm -f
다음을 수행하십시오.
find /tmp -name core -type f -exec /bin/rm -f {} \;
그렇다면 그것을 사용하면 xargs
전체 속도가 향상됩니까?
(맨 페이지에서 예제를 가져왔습니다 xargs
.)
답변1
Matt가 이미 말했듯이 일반적으로 다음 사실을 알아야 합니다.모든NUL
byte(문자열의 끝을 구분하기 때문) 및 the /
(경로 요소를 구분하기 때문에) 이외의 문자가 파일 이름에 나타날 수 있습니다 . 따라서 귀하의 xargs
예는 (GNU 시스템에서)
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
이에 상응하는 것은 -exec
find +
이지만 \;
.
find /tmp -name core -type f -exec /bin/rm -f {} +
이 버전은 각 파일을 호출하지 않고 이전 /bin/rm
과 같이 매개변수를 번들로 묶습니다 xargs
.
답변2
첫 번째 버전은 아마도 두 번째 버전보다 더 빠를 것입니다. xargs
여러 파일을 한 번에 전달 rm
하지만 find
각 파일에 대해 한 번 호출합니다.rm
따라서 첫 번째 버전에서는 분기/실행 호출을 줄일 수 있습니다.
(일치 항목이 하나만 있거나 전혀 일치하지 않는 경우 두 번째 버전이 더 빠를 수 있습니다. 직접 수행할 필요가 없습니다 xargs
.)
하지만 이것이 하나를 선택하는 좋은 기준은 아니라고 생각합니다. 이 특정한 경우에는 이상한 파일 이름에 대해 걱정할 필요가 없지만 일반적으로 걱정해야 합니다. 두 번째 버전이 더 안전하므로 일반적으로 사용하는 것이 좋습니다.