Tips/LINUX2010. 4. 28. 17:43

$ find ./ -name "*.tmp" | xargs rm

$ find ./ -name "*.tmp" -exec rm {} \;

언뜻보면 -exec를 쓰면 되는데 왜 xargs를 쓰는지에 대해 의심할 수 있다.
find 명령은 -exec를 사용할 수 있기 때문에 xargs의 필요성이 없어보일 수 있으나 다른
명령의 경우는 사정이 달라진다.

예를 들면, xargs와 함께 다음의 명령을 사용할 수 있다.

ls *.tmp | xargs cat

다시 말해 ls 명령은 -exec와 함께 쓸 수 없다는 뜻이다.

또 다른 차이점은 find ~ -exec rm 과 같은 형식을 사용하면 파일을 찾아낸 후
파일마다 rm 명령이 실행되어 시스템에 부하가 크다.

또 다른 차이점은, find ~ -exec rm 과 같은 형식을 사용하면  명령의 길이가 너무 길
때 에러가 생길 수 있다는 점이다.

참고: 리눅스 맨페이지에 있는 xargs 명령 예제


  $ find /tmp -name core -type f -print | xargs /bin/rm -f
  $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f





Posted by young.h.rhie