2014-08-31 3 views
3

find 매개 변수 -print0xargs 매개 변수 -0이 함께 작동해야합니다. findman 페이지는 말한다 :findprint0 및 xargs -0을 연결하면

-print0이 ....이 옵션은 xargs를의 -0 옵션에 해당합니다.

글쎄, 그들은 나를 위해 일하는 한 find 출력을 생산하고 있습니다. find가 출력을 생성하지 않으면 어떻게 작동시킬 수 있습니까?

find /dev /sys /usr -maxdepth 0 -print0 | xargs -0 -n1 | wc -l # 3 - OK 
find /dev /sys -maxdepth 0 -print0 | xargs -0 -n1 | wc -l   # 2 - OK 
find /dev -maxdepth 0 -print0 | xargs -0 -n1 | wc -l    # 1 - OK 
find /dev -maxdepth 0 -name "x" -print0 | xargs -0 -n1 | wc -l # 1 instead of 0 - Fail 

어떤 나쁜 일이

find -type d -name ... -print0 | xargs -0 du -sh 

어떤 디렉토리가 인수없이 du 호출 xargs 발견하고 du.

P.S.을 가정 할 때, 예를 들어, 발생할 수 있습니다 나는 find-exec 매개 변수에 대해 알고 있으며, 단지 findxargs을 올바르게 연결하고자합니다.

답변

5

GNU xargs은 다음과 같은 옵션을 제공합니다 : 표준 입력이 어떤 nonblanks 포함되지 않은 경우, 명령을 실행하지 않는

--no-run-if-empty 
    -r  

. 일반적으로 입력이 없더라도 명령이 한 번 실행됩니다.