次のサブディレクトリを含むディレクトリがあります。つまり、$ 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つのディレクトリとすべてのコンテンツが占めるディスク容量を確認したいと思います。
たとえば、希望の出力は次のようになります。
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 *(/)