Bashで1行のコマンドを使用して、各サブディレクトリのサイズをリスト形式で表示しますか?


100

ディレクトリのリストとサイズをリスト形式で取得したいのですが、これはls -l

問題は、これを実行できる1行のコマンドがあるということです。これを出力するだけの長いコマンドがある人もいます。長すぎます。

これを実行できるコマンド、または簡単に入力できるコマンドの組み合わせ du -hそれを与えるが、それは私が望むものではないすべてのサブフォルダを表示します。現在のディレクトリフォルダのみ。

回答:


71

おそらくディレクトリをサイズ順に並べたいでしょう:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

ディレクトリに多数のエントリがある場合、これは機能しません。bash: /run/current-system/sw/bin/du: Argument list too long
クリスストリチンスキー

123

これを試して

du -h --max-depth=1

出力

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

代替案

--max-depth=1あなたの好みには少し長すぎる場合は、以下を使用してみることもできます:

du -h -s *

これは-s--summarize)を使用し、デフォルトではフォルダー自体のサイズのみを印刷します。現在の作業ディレクトリ(*)内のすべての要素を渡すことにより、次のような出力が生成され--max-depth=1ます。

出力

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

違いはわずかです。前者のアプローチでは、現在の作業ディレクトリの合計サイズと、そこに含まれるすべてのフォルダの合計サイズが表示されます。ただし、深さは1のみです。

後者のアプローチは、渡されたすべてのアイテムの合計サイズを個別に計算します。したがって、lib64出力にシンボリックリンクが含まれますが、非表示のアイテム(名前がドットで始まる)は除外されます。また、引数として渡されなかったため、現在の作業ディレクトリの合計サイズも不足しています。


4
完璧な答え。Mac OSXでは、--depthパラメーターは認識されません。du -h -d 1同じ結果に使用します。
ディラン14


2

NCurses Disk Usageシェルコマンドに言及する価値があります

Ncduは、ncursesインターフェイスを備えたディスク使用量アナライザーです。グラフィカルなセットアップ全体を使用できないリモートサーバー上のスペースホグを見つけるように設計されていますが、通常のデスクトップシステムでも便利なツールです。Ncduは、高速でシンプルで使いやすいことを目指しており、ncursesがインストールされている最小限のPOSIXのような環境で実行できる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.