GNU du(즉, 내장되지 않은 Linux 또는 Cygwin)에서는 --exclude옵션을 사용하여 일치하지 않는 파일을 제외 할 수 있습니다 .
du -s --exclude='*.html' /var/foo
*.pdf파일 을 정확하게 일치 시키려면 다른 방법을 사용하여 파일을 나열해야 du하며 인수 당 하나 이상의 출력 행과 옵션으로 총계를 표시해야합니다 -c. tail마지막 줄을 제외한 모든 줄을 제거하거나“total”단어를 제거하기 위해 sed를 호출 할 수 있습니다 . 한 디렉토리에있는 파일을 열거하려면 쉘에서 와일드 카드를 사용하십시오.
du -sc /var/foo/*.pdf | tail -n1
du -sc /var/foo/*.pdf | sed -n '$s/\t.*//p'
서브 디렉토리에서도 파일을 탐색해야하는 경우, 쉘이 지원하는 경우을 find사용하거나 **/패턴을 사용하십시오. 를 들어 **/, bash는, 첫 번째 실행에서 shopt -s extglob, 그리고 4.2까지의 bash 버전이 디렉토리에 심볼릭 링크를 통과 않습니다; zsh에서는 즉시 작동합니다.
du -sc /var/foo/**/*.pdf | tail -n1
찾기 버전과 관련된 추가 문제는 너무 많은 파일이있는 경우 명령 줄 길이 제한을 유지하기 위해 두 번 이상 find실행 du됩니다. 와일드 카드 방법을 사용하면 이러한 오류가 발생하면 오류가 발생합니다 ( "명령 줄 길이 제한 초과"). 다음 코드는 개행을 포함하는 일치하는 파일 이름이 없다고 가정합니다.
find /var/foo -name '*.pdf' -exec du -sc {} + |
awk '$2 == "total" {total += $1} END {print total}'
du -sh /foo/*.pdf있습니까?