찾기를 사용하여 1000일보다 오래된 파일이 사용한 총 디스크 공간을 계산하세요.

찾기를 사용하여 1000일보다 오래된 파일이 사용한 총 디스크 공간을 계산하세요.

우리 시스템에는 4년 이상의 데이터가 있습니다. 2년 전의 파일과 디렉터리를 새 저장소로 이동해야 합니다. 우리의 요구 사항은 2017년 1월부터 현재까지의 데이터가 몇 테라바이트인지 아는 것입니다. 2. 개인 폴더 제외 명령을 찾으려고 했지만 찾을 수 없습니다.

find . -type f -mtime +1010 ! -path "./home/01_Personal Folder*" -printf '%s\n' \ 
| awk '{a+=$1;} END {printf "%.1f GB\n", a/2**30;}'

답변1

다음과 같이 보일 수 있습니다:

find . ! -path "./home/01_Personal Folder*" -type f -mtime +1000 -exec du -ch {} + | grep total

대답은 다음을 기반으로 합니다.디렉토리 분기에 있는 특정 파일의 전체 크기 찾기

쉘을 설명하라주문하다.

답변2

...
37M     total
29M     total
42M     total
43M     total
36M     total

real    0m1.271s
user    0m0.561s
sys     0m1.278s

내가 얻는 것은 다음과 같습니다.

time find ~/sda1 -type f -exec du -ch {} +|grep total

이제 총계를 합산하는 도구가 필요합니다! (이것은 -exec...+오버플로입니다)

하지만 함께:

time find ~/sda1 -type f -printf "%s\n" | awk '{a+=$1;} END {print a;}'

10483650002

real    0m0.550s
user    0m0.251s
sys     0m0.349s

그리고:

]# time du ~/sda1 -sh
11G     /.../sda1

real    0m0.458s
user    0m0.116s
sys     0m0.340s

빠르고 친절하게 잘 받았습니다.


dufind가 어쨌든 모든 파일을 찾고 stat크기를 무료로 제공하는 것은 비효율적입니다. -c "total"로 다운그레이드된 find ... -exec du {} +계산기 를 사용하세요 .du

물론 파일 크기(바이트 단위)와 디스크 사용량(블록 단위)에는 약간의 차이가 있습니다.


이는 원래 `find ... -printf "%s\n" | awk '{...} END {...}' 작동 방식을 설명하기 위한 것입니다.

]# find ~ -maxdepth 1 -printf "%s\n" | awk '{a+=$1;} END {print a;}'
1093990
]# find ~ -maxdepth 1 -printf "%s\n" | awk '{a+=$1;} END {printf "%x\n",a;}'
10b166

이번이 처음입니다 awk.

나는 이것을 에서 테스트했고 ~ -maxdepth 1OP 끝에 있는 "GB"라는 정수가 나에게 충격을 주었기 때문에 10**6 = 16x64K를 얻을 때까지 놀았습니다.

관련 정보