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
있습니까?