Mac의 Bash에서는 다음과 같은 작업을 수행할 수 있습니다.
cd # go to home directory
ls -d */
홈 디렉터리의 폴더 이름을 가져옵니다.
우리는 사용할 수 있습니다
du -sh Documents
사람이 읽을 수 있는 형식으로 폴더 크기를 가져옵니다.
나는 다음과 같은 것을 시도했습니다
ls -d */ | xargs du -sh
Tmp Files
그러나 일부 디렉토리에는 해당 이름 (공백으로 구분된 두 단어) 이 있기 때문에 작동하지 않습니다 du -sh Tmp Files
.
수정이 가능합니까, 아니면 du -sh
모든 최상위 폴더와 전체 폴더를 처리하는 더 쉬운 방법이 있습니까?
답변1
xargs를 피할 수 있습니다.
du -sc */
를 사용하는 것은 "명령줄이 너무 깁니다" 오류를 피하기 위해 수천 개의 디렉토리가 있는 경우에만 유용합니다 xargs
(그러나 전체 합계는 없고 du
by 에 대한 각 호출에 대한 부분 합계 만 얻을 수 있습니다 xarg
).
다른 명령의 경우 파일 이름의 잘못된 구문 분석을 방지하려면 xargs
공백이나 줄 바꿈 대신 null 값으로 구분하세요.
printf '%s\0' * | xargs -0 du -s
( printf
인수를 반복하고 마지막에 NUL로 인쇄하며 xarg
옵션으로 인해 NUL로 분할됩니다 -0
). 이는 printf
바이너리를 사용할 때 일반적인 줄 길이 제한이 있는 내장 쉘(bash)이라고 가정합니다.
답변2
총 금액은
du -s .
개별 폴더(및 파일)의 크기
du -s * .*
폴더만
du -s */ .*/