du 파일 만 사용하여 크기 얻기


49

du 명령을 사용하여 하위 디렉토리에있는 모든 파일과 모든 파일의 크기를 얻는 방법은 무엇입니까?

모든 파일 (및 하위 디렉토리의 파일)의 크기를 얻으려면 다음 명령을 시도하고 있습니다.

find . -type f | du -a

그러나 이것은 폴더 크기도 인쇄합니다. 하위 디렉토리에있는 모든 파일 및 파일의 크기 목록을 얻으려면 어떻게해야합니까? 나는 또한 시도 exec flag하지만 난 다른 명령으로 출력이 결과 실행 후 어떻게 파이프 확실하지 오전 find에를 du.

운영 체제는 ksh 쉘이있는 AIX 6.1입니다.

답변:


55

나는 보통 -exec유틸리티를 사용 합니다. 이처럼 :

find . -type f -exec du -a {} +

GNU find로 bash와 ksh에서 모두 시도했습니다. 나는 결코 AIX를 시도하지 않았지만 find 버전에는 -exec구문 이 있다고 확신한다 .

다음 스 니펫은 목록을 가장 먼저 정렬합니다.

find . -type f -exec du -a {} + | sort -n -r | less

3
find -print0다른 GNU 기능에 액세스 할 수 없으면이 답변을 사용하십시오 . 가능한 경우, 교체 \;로하는 것은 \+적은 호출 될 것이다 du, 따라서 더 나은 성능을 제공합니다.
jw013

덕분에 du는 크기가 다른 단위로 플래그를 제공하기 때문에 특히 효과적입니다.
Shardul Upadhyay

+옵션 에 대한 정보를 찾을 수 없습니다 . du또는 옵션 find입니까? 그리고 왜 통화가 줄어 듭니까?
Amelio Vazquez-Reina

1
의 표준 옵션입니다 find. 이 exec명령은 명령에 대한 du모든 find인수 의 결과와 함께 한 번만 명령에 지정합니다 (이 경우 ) .
rahmu

wtf, 왜 같은 명령이 없습니다du -f --threshold=1G
Alexander Mills

16

GNU 유틸리티가 있다면 시도해보십시오

find . -type f -print0 | du --files0-from=-

print0이 유효한 명령이 아니며 마지막 빼기에서 인식 된 플래그가 아니라는 명령이 실패했습니다. 나는 때문에이 방법은 아닌 것 같다 man du목록하지 않습니다 files또는 from플래그.
Shardul Upadhyay

질문에 운영 체제를 태그로 추가해야합니다. 나는 당신이 GNU를 가지고 있다고 가정했지만 그것을 언급하는 것을 잊었습니다.
jw013

1
저에게 공감하십시오! 귀하의 특정 솔루션은 du -ch총 일치하는 파일을 얻기 위해 작동 합니다.find . -name 'blah blah.*' -print0 | du --files0-from=- -ch
Michael Goldshteyn

9

나는 일반적으로 다음을 사용합니다.

find . -type f -print0 | xargs -r0 du -a

Xargs는 전달 된 인수가없는 경우에도 일반적으로 명령을 호출합니다. xargs du </dev/null여전히 xargs -r du </dev/null호출되고 du를 호출하지 않습니다. 이 -0인수는 개행 종료 대신 널 종료 문자열을 찾습니다.

그런 다음 일반적으로 | awk '{sum+=$1} END {print sum}'총계를 얻기 위해 끝에 추가 합니다.


2
then I usually add골드 :-)의 가치가있다
라덱

2

긴 매개 변수 이름과 사람 정렬 버전이 있습니다.

find . -type f -exec du --human {} + | sort --human --reverse | head

또한 -a/--all로 전달 될 필요가 없습니다 du.


-2

현재 디렉토리의 특정 파일

du -ch files*

더 짧고 저에게 효과적입니다

du -sh .

현재 디렉토리 및 하위의 모든 파일

du (GNU coreutils) 8.30


1
(1) 무슨 뜻 du -ch files*입니까? 가정의 현재 디렉토리를 포함 ant, apple, banana, bat, cat, corn, date, 그리고 dog어떤 명령은 단지 파일을 얻기 위해 사용합니다 - 동물의 이름은 하위 디렉토리가 있고 과일 / 야채 이름이 파일을 어디에? 아니면 그게 당신이 의도 한 것이 아닙니까? (2)  du -sh .는 파일 자체가 아니라 현재 디렉토리의 모든 디렉토리와 하위 디렉토리 전체를보고합니다. 이것은 질문이 요청한 것과 정반대입니다.
G-Man
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.