문제

예를 들어, 예상보다 빠르게 채워지는 큰 파일 시스템이 있습니다. 그래서 나는 추가되는 것을 찾습니다.

find /rapidly_shrinking_drive/ -type f -mtime -1 -ls | less

그리고 나는 많은 것들을 발견했습니다. 6 개 유형의 수천 파일. 나는 유형을 단독으로 계산할 수 있습니다.

find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 -ls | wc -l

그러나 내가 정말로 원하는 것은이 파일의 디스크에서 총 크기를 얻을 수 있다는 것입니다.

find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 | howmuchspace

누군가가있는 경우 Perl One-Liner에 열려 있지만, 멀티 라인 스크립트 또는 File :: 찾기와 관련된 솔루션을 사용하지 않을 것입니다.

도움이 되었습니까?

해결책

명령 du 디스크 사용에 대해 알려줍니다. 특정 사례의 예제 예 :

find rapidly_shrinking_drive/ -name "offender1" -mtime -1 -print0 | du --files0-from=- -hc | tail -n1

(이전에 나는 썼다 du -hs, 그러나 내 기계에서 무시되는 것처럼 보입니다 find'입력은 대신 CWD의 크기를 요약합니다.)

다른 팁

DARN, Stephan202가 옳습니다. 나는 du -s (요약)에 대해 생각하지 않았으므로 대신 awk를 사용했습니다.

find rapidly_shrinking_drive/ -name "offender1" -mtime -1 | du | awk '{total+=$1} END{print total}'

나는 다른 대답을 더 좋아하고 거의 더 효율적입니다.

GNU 찾기와 함께

 find /path -name "offender" -printf "%s\n" | awk '{t+=$1}END{print t}'

위의 Jason의 의견을 답의 상태로 홍보하고 싶습니다. 왜냐하면 그것이 가장 니모닉이라고 생각하기 때문입니다 (가장 일반적이지는 않지만 파일 목록을 지정해야한다면 가장 일반적이지는 않지만 find):

$ du -hs *.nc
6.1M  foo.nc
280K  foo_region_N2O.nc
8.0K  foo_region_PS.nc
844K  foo_region_xyz.nc
844K  foo_region_z.nc
37M   ETOPO1_Ice_g_gmt4.grd_region_zS.nc
$ du -ch *.nc | tail -n 1
45M total
$ du -cb *.nc | tail -n 1
47033368  total

나는이 모든 명령을 시도했지만 운이 없습니다. 그래서 나는이게 답을주는 것을 발견했다.

find . -type f -mtime -30 -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'

당신은 또한 사용할 수 있습니다 ls -l 그렇다면 크기를 찾기 위해 awk 크기를 추출하려면 :

find /rapidly_shrinking_drive/ -name "offender1" -mtime -1 | ls -l | awk '{print $5}' | sum
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top