
MacのBashでは、次のことができます。
cd # go to home directory
ls -d */
ホームディレクトリのフォルダ名を取得します。
私達は利用できます
du -sh Documents
人間が読める形式でフォルダサイズを取得します。
私は次のことを試しました
ls -d */ | xargs du -sh
Tmp Files
ただし、一部のディレクトリにはその名前(スペースで区切られた2つの単語)があるため、機能しません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
、バイナリを使用するときに一般的な行長制限がある組み込みシェルであると仮定します。
答え2
総額は
du -s .
個々のフォルダ(およびファイル)のサイズ
du -s * .*
フォルダのみ
du -s */ .*/