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

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

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

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 -

이는 (충분히 새로운?) GNU 버전 finddu.

답변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보다 쉽고 빠릅니다. (카탈로그를 찾아보고 많은 시간을 절약할 수 있습니다).

관련 정보