다음 하위 디렉터리를 포함하는 디렉터리가 있습니다. 즉, 다음을 실행하면$ tree -L 1
.
├── 2007-06-20_to_2008-10-01
├── 2008-07-21_to_2008_08_12-Nokia 2mp
├── 2009-11-01_to_2011-01-10 - All iphone Pics
├── 2011-01-01 palliser-pics
├── 2011-03-10_to_2011-04-12-few iphone pics b4 switch to HTC
└── 2011-03-31-to-2013-05-01 ALL HTC pics-backup-prior-to-factory-reset
이 두 디렉터리와 모든 콘텐츠가 차지하는 디스크 공간의 양을 확인하고 싶습니다.
예를 들어 원하는 출력은 다음과 같습니다.
2.7G 2007-06-20_to_2008-10-01
200MB 2008-07-21_to_2008_08_12-Nokia 2mp
1.3G 2009-11-01_to_2011-01-10 - All iphone Pics
667MB 2011-01-01 palliser-pics
2.3G 2011-03-10_to_2011-04-12-few iphone pics b4 switch to HTC
123MB 2011-03-31-to-2013-05-01 ALL HTC pics-backup-prior-to-factory-reset
그래서 나는 다음과 같은 노력을 해왔습니다.
find . -maxdepth 1 -type d | xargs du -h
그러나 일부 디렉토리 이름에는 공백이 포함되어 있기 때문에 출력의 각 줄은 find
에 전달되기 전에 ' 를 많이 생성합니다. 이 문제를 해결할 수 있는 방법이 있습니까?WORD
xargs
rename
문제의 근본 원인이 파일의 공백으로 인해 발생한다는 것을 알고 있습니다. 를 사용하여 디스크 크기를 얻는 방법을 찾을 수 없으면 du
다음을 사용하여 문제를 해결하겠습니다.find
xargs
답변1
find | xargs
-print0
-0
항상 다음 설명과 함께 및 와 함께 사용해야 합니다 man find
.
-print0
True; print the full file name on the standard output, followed
by a null character (instead of the newline character that
-print uses). This allows file names that contain newlines or
other types of white space to be correctly interpreted by
programs that process the find output. This option corresponds
to the -0 option of xargs.
그래서 당신은 다음을 원합니다: 완전히 진화된 셸이
find . -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 du -sh
있거나 없는 경우 ( ): 더 간단한 방향으로 안내합니다.find
zsh
print -N *(/) | xargs -0 du -sh
du -sh *(/)