재귀적으로 디렉토리의 크기를 찾아 총계를 얻습니다.

재귀적으로 디렉토리의 크기를 찾아 총계를 얻습니다.

이 명령을 사용하여 원하는 폴더를 찾고 크기를 계산합니다.

find . -type d -name 'tmp_c*' | xargs du -hcs {} \; + 

내 버전의 find는 -exec를 지원하지 않습니다. 그러나 이것은 작동합니다. 그러나 내 검색 문자열이 포함된 디렉토리에 대한 올바른 합계를 제공하는지 확실하지 않습니다. 명령을 실행하고 less로 파이프하면 각 폴더 크기가 계산된 다음 자주 총계가 출력됩니다. 이와 같이:

140K    ./r/g/userid/attach/tmp_c_241091464_2
68K     ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G    total

출력을 파일로 리디렉션한 다음 전체적으로 grep하면 다음과 같은 결과가 나타납니다.

2.3G    total
978M    total
1.1G    total
2.0G    total
1.1G    total

생각하다이것은 나에게 올바른 숫자를 제공합니다. 하지만 이 명령을 한 단계 더 발전시켜 총계의 합계를 한 줄에 표시하려면 어떻게 해야 할까요?

답변1

find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -

이는 (최근?) find및 의 GNU 버전을 가정합니다 du.

답변2

이것은 작동해야 하며 내 EL4 상자에서 테스트되었습니다. 내가 가지고 있는 것 중 가장 오래되었고 나를 소름끼치게 만듭니다. EL3를 어떻게 사용하는지 모르겠습니다.

find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1

완료coreutils-4.5.3-26

답변3

https://stackoverflow.com/a/1323769/799204

한 가지 대체 솔루션은 awk를 사용하는 것입니다.

하지만 이 경우에는 스크립트를 조정해야 합니다.

find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'

출력은 10진수로 표시됩니다.

답변4

epel이 3이 아닌 5에서 시작하는지 확인했으므로 옵션만 사용자 정의 스크립트입니다.

ncdu를 설치할 수도 있습니다.

https://dev.yorhel.nl/ncduit

나는 그것을 항상 사용하고 있으며, 어떤 맞춤형 bash보다 훨씬 쉽고 빠릅니다. (디렉터리를 탐색할 수 있어 시간이 많이 절약됩니다).

관련 정보