패턴(예: *.JPG)으로 필터링하여 디스크 사용량을 계산하는 방법은 무엇입니까?

패턴(예: *.JPG)으로 필터링하여 디스크 사용량을 계산하는 방법은 무엇입니까?

디렉토리의 일부 파일에서만 사용되는 디스크 공간을 반복적으로 계산하려면 어떻게 해야 합니까?

답변1

find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1

  1. -iname대소문자를 구분하지 않고 검색합니다.
  2. -print0NUL줄 바꿈 대신 쓰기
  3. --files0-from=-NUL개행 대신 읽고 stdin인수 대신에서 읽습니다.
  4. -h사람이 읽을 수 있는 형식으로 결과를 출력합니다(예: 1K대신 1024).
  5. -c총계를 출력합니다(예: 23G)
  6. tail -1개별 파일 크기를 억제하고 총계만 출력합니다.

답변2

와 함께 zsh:

zmodload zsh/stat

stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))

이름이 끝나는 모든 파일 .jpg(한정자가 있는 숨겨진 파일 포함 D)의 누적 디스크 사용량을 인쇄합니다. 동일한 파일에 대한 여러 개의 하드 링크가 있는 경우 디스크 사용량이 여러 번 계산됩니다(대부분의 du구현 과 다릅니다 ).

파일 중 일부가 다음과 같은 경우예배 규칙서, 이는 해당 디렉토리를 탐색하는 동안 찾을 수 있는 파일이 아닌 디렉토리 파일 자체의 디스크 사용량만 계산합니다( 와의 또 다른 차이점 du).

관련 정보