해결책
에 옵션 -c(또는 --total)을 제공하면 du(1)총합계를 생성하도록 지시 할 수 있습니다. 구현 du(1)이 이러한 옵션 중 하나 를 지원하는 경우 다음 명령을 사용하여 원하는 효과를 얻을 수 있습니다.
$ find . -name 'flibble*' -ctime +90 -exec du -shc {} +
편집 : 파일 수가 시스템에서 허용하는 최대 매개 변수 수를 초과 find해도 여전히 command여러 번 실행될 수 있습니다 . 일부 구현은 du(1)파일에서 파일 이름을 읽는 것을 지원하며, 언급 된 제한이 없습니다.
$ find -name 'flibble*' -ctime +90 -print0 > filenames
$ du -shc --files0-from=filenames
설명
의 의미의 차이 -exec command {} \;와는 -exec command {} +다음과 같다 :
command {} \;의 command각 결과에 대해 한 번씩 실행 find됩니다. 결과의 경로 이름이 대신 전달됩니다 {}.
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} \;
1
2
3
command {} +command모든 결과가 검색 되면를 실행 합니다. 결과의 경로 이름이 대신 전달됩니다 {}.
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} +
1 2 3
이 -print0옵션 find(1)을 사용하면 찾은 파일 이름이 널 문자로 구분 된 표준 출력으로 인쇄되고이 --files0-from옵션 du(1)은 널로 구분 된 파일 이름을 읽습니다. 줄 바꾸기 문자와 달리, 널 문자는 파일 이름에 나타나지 않을 수 있으므로 출력이 명확합니다.
du(1)및 의 옵션에 대한 자세한 내용은 find(1)해당 맨 페이지를 참조하십시오.
$ man du
$ man find