"du" 명령을 통해 특정 확장자의 전체 파일 크기를 표시하는 방법

"du" 명령을 통해 특정 확장자의 전체 파일 크기를 표시하는 방법

내 디렉토리에는 수백 개의 pdf 파일과 html 파일이 있습니다. PDF 파일의 전체 크기를 알고 싶습니다.

명령을 사용하면 du -ch /var/foo전체 파일 크기를 볼 수 있지만 전체 크기인 마지막 줄만 필요합니다.

디렉토리에 pdf 파일만 포함된 경우 이 옵션을 사용할 수 있지만 -s이번에는 해당 옵션을 사용할 수 없습니다.

특정 파일 형식의 전체 크기만 얻는 방법은 무엇입니까?

답변1

GNU du(즉, 내장되지 않은 Linux 또는 Cygwin)의 경우 이 --exclude옵션을 사용하여 일치시키고 싶지 않은 파일을 제외할 수 있습니다.

du -s --exclude='*.html' /var/foo

파일을 적극적으로 일치시키려면 *.pdf다른 방법을 사용하여 파일을 나열하고 du각 인수에 대해 하나 이상의 출력 행과 options 를 포함한 합계를 표시해야 합니다 -c. 호출하여 tail마지막 줄을 제외한 모든 항목을 삭제하거나 sed를 사용하여 "total"이라는 단어를 삭제할 수 있습니다. 이 디렉터리의 파일을 열거하려면 셸에서 와일드카드 문자를 사용하세요.

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}'

답변2

쉘이 파일을 확장하도록 할 수 있습니다:

$ mkdir foo
$ echo "abc" > foo/1.pdf
$ echo "abcd" > foo/2.pdf
$ echo "abcd" > foo/3.html
$ du -ch foo/*.pdf
4,0K    foo/1.pdf
4,0K    foo/2.pdf
8,0K    total

그러나 보시다시피 이는 파일 크기가 처음 생성되었을 때보다 약 1000배 더 커졌음을 나타냅니다. 더 나은 옵션은 다음 -b옵션을 사용하는 것입니다.

$ du -cbh foo/*.pdf
4   foo/1.pdf
5   foo/2.pdf
9   total

큰 파일 크기는 여전히 사람이 읽을 수 있는 형식으로 표시됩니다 173K.

답변3

"find" 명령을 사용하면 이 질문에 대한 답변에서 찾을 수 있는 다음과 같은 결과를 얻을 수 있습니다.

확장자별로 그룹화된 전체 파일 크기를 찾는 방법

답변4

GNU를 사용 find하고 다음을 수행하십시오 du.

LC_ALL=C find . -iname '*.pdf' -type f -print0 |
  du -ch --files0-from=- |
  tail -n 1

이름이 ( , ...) .pdf또는 기타 변형으로 끝나는 모든 일반 파일의 누적 디스크 사용량입니다..PDF.pdF

디스크 사용량(예: 모든 파일에서 읽을 수 있는 데이터의 양) 대신 파일 크기 합계(동일한 파일에 대한 모든 하드 링크 계산)를 보려면 에 및 옵션을 추가하거나 --count-links대신 --apparent-size을 사용할 du수 있습니다 . ( 힌트 대로 ). PDF 파일의 심볼릭 링크 수도 계산하려면 이 옵션을 변경하여 추가 하세요 .du -lbchdu -ch-b--apparent-size-type-xtype--dereference-argsdu

관련 정보