폴더의 전체 크기를 얻는 방법

폴더의 전체 크기를 얻는 방법

Solaris 서버에서 이 출력의 전체 크기를 어떻게 알 수 있습니까? 도와주세요? 지난 1일 동안의 총 파일 크기를 알고 싶습니다.

root@test:# find . -mtime -1 -type f | xargs du -sh
226M    ./10/01.tar
209M    ./10/02.tar
198M    ./10/03.tar
202M    ./10/04.tar
193M    ./10/05.tar
193M    ./10/06.tar
193M    ./10/07.tar
204M    ./10/08.tar
222M    ./10/09.tar
244M    ./10/10.tar
24G     ./10/00.tar
17G     ./10/01.tar
11G     ./10/02.tar
8.3G    ./10/03.tar
6.5G    ./10/04.tar
5.8G    ./10/05.tar
6.0G    ./10/06.tar
8.3G    ./10/07.tar

답변1

이 옵션을 사용하여 매개변수의 누적 디스크 사용량을 -c가져오고 끝에 한 줄을 추가할 수 있습니다. 그래서 여기 있습니다:ctotal

zsh -c 'du -hsc -- **/*(DoN.m-1) | tail -n 1'

zsh대신 파일 목록을 여러 호출로 분할하는 것을 피하기 위해 여기에서 사용됩니다 find -exec cmd {} +(그 자체는 매우 신뢰할 수 없는 것보다 훨씬 낫습니다 ) . 그러나 이는 실행 시 명령에 전달되는 최대 인수 수에 제한이 발생할 수 있음을 의미합니다.find | xargsdu

GNU 구현 ( 시스템에서 호출 du할 수 있음 )에 액세스할 수 있는 경우 다음을 수행할 수도 있습니다.gdu

find . -type f -mtime -1 -print0 | gdu --files0-from=- -hsc | tail -n 1

또는 합계를 킬로바이트 단위로 가져오는 GNU 구현을 사용합니다 find(그러나 하드 링크가 있는 경우 중복 제거는 수행되지 않습니다).

gfind . -type f -mtime -1 -printf '%k\n' |
  awk '{s+=$1}; END{print s+0}'

답변2

다음과 같은 작업이 수행됩니다.

 find . -mtime -1 -type f | xargs du -sk|awk '{a+=$1} END {print a}'

Solaris는 du그렇지 않으므로 --bytes킬로바이트 단위의 정밀도로 결과를 얻을 수 있습니다. 값을 기가바이트 단위 a로 나누어 인쇄하려면1024*1024

관련 정보