[Ubuntu, OSX] find 와 xargs 사용시 파일 이름에 공백등이 있을 경우 Computer Tip

*nix 운영체제에서 find와 xargs를 명령을 이용한 활용은
한번 익숙해지면 그 편리함을 다른 무엇과 비교할 수 없습니다.

예를 들어, 특정 디렉터리 (예로 /opt)에서 *.c, *.h 파일을 찾아 
touch 명령으로 파일 시각을 변경하려면,

$ find /opt -name "*.[ch]" | xargs touch

라고 명령을 내리면 됩니다.

그런데 문제는 파일 이름에 공백 등이 있을 경우,
이것이 각각의 분리된 파일로 넘어간다는 문제가 있습니다.

하지만 이런 경우

$ find /opt -name "*.[ch]" -print0 | xargs -0 touch

와 같이 find에서는 -print0 라고 주면 '\0' 분리자로 출력이 되고,
xargs에서는 '\0'으로 구분하여 그 다음 명령의 인자로 하나 하나 넘어가라는 의미입니다.

일순 쉬운 것인데 이를 위하여 그동안 간단한 쉘 명령을 추가했던 것을 생각하면,
역시 심오한 패러미터의 명령 옵션을 잘 알아야 되겠다는 생각을 한번 더 하게 되었습니다.

핑백

덧글

댓글 입력 영역

구글애드텍스트