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
가져오고 끝에 한 줄을 추가할 수 있습니다. 그래서 여기 있습니다:c
total
zsh -c 'du -hsc -- **/*(DoN.m-1) | tail -n 1'
zsh
대신 파일 목록을 여러 호출로 분할하는 것을 피하기 위해 여기에서 사용됩니다 find -exec cmd {} +
(그 자체는 매우 신뢰할 수 없는 것보다 훨씬 낫습니다 ) . 그러나 이는 실행 시 명령에 전달되는 최대 인수 수에 제한이 발생할 수 있음을 의미합니다.find | xargs
du
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