webdevqa.jp.net

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

ls -lを実行したときと同じように、ディレクトリとそのサイズのリストをリスト形式で取得します。

問題は、これを実行できる1行のコマンドがあるということです。これを出力するためだけに他の人が長いコマンドを持っているようです。それは長すぎます。

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

98

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

$ 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
63
raychi

これを試して

du -h --max-depth=1

出力

[email protected]:/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が行うのと同様の出力が生成されます。

出力

[email protected]:/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

違いは微妙です。前者のアプローチでは、現在の作業ディレクトリの合計サイズとその中に含まれているすべてのフォルダの合計サイズが表示されます。

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

121
Der Hochstapler

ディスク上のすべてのファイルフォルダと隠しファイルのサイズを印刷します。

[email protected] /home/el $ du -sh `ls -a`
258M    .
265M    ..
4.0K    .classpath
258M    .git
4.0K    .gitignore
9.0K    nbactions.xml
12K     README
20K     .README.swp
4.0K    run.sh
23K    XmlPostPropagate.php
6
Eric Leschinski

言及する価値がある NCursesディスク使用量 シェルコマンド。

Ncduはncursesインターフェイスを持つディスク使用状況アナライザーです。それはあなたが利用可能な全体的なグラフィカルなセットアップを持っていないリモートサーバー上のスペース浪費を見つけるように設計されていますが、それは通常のデスクトップシステム上でさえも便利なツールです。 Ncduは速く、簡単で使いやすいことを目指しており、ncursesがインストールされている最小限のPOSIX風の環境で動くことができるはずです。

2
Ray