web-dev-qa-db-ja.com

ディレクトリのサイズを計算するにはどうすればよいですか?

ディレクトリのサイズを知る方法は?サブディレクトリとファイルを含みます。

189
Juanjo Conti
du -s directory_name

または、人間が読める出力を取得するには:

du -sh directory_name

-sオプションは、各サブディレクトリのサイズをリストせず、合計サイズのみをリストすることを意味します。

245
sepp2k

GNU du-bオプションを取ります。

さらにヘルプが必要な場合は、 man page および info page を参照してください。

-b--bytes--apparent-size --block-size=1と同等

7
user2573436

Ncduなどの別のパッケージを使用するとうまくいく場合がありますが、サイズを調整するフォルダーのリストをduに指定するだけで、多くのフォルダーの同じ比較をある程度行うことができます。たとえば、システムの最上位ディレクトリを比較するには...

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

-cは総計を生成します

1
Kalpesh Soni

試す

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

これは、du -sh ./*を使用してふるいにかける大きなディレクトリを見つけるのに役立ちます

1
rollinjack

Awkの「file-size.sh」を使用できます ベロアライブラリ

ls -ARgo "$@" | awk '{q += $3} END {print q}'
1
Steven Penny

私は常に「ncdu」パッケージをインストールし、すべてのディレクトリのすべての出力をグラフィカルに表示します。これは、1つのディレクトリの合計に関係なく、通常、マシンで最も多くのディスク領域を消費しているものを知る必要があるためです。

使用法: Sudo ncdu /(読み取り権限のあるフォルダではSudoは必要ありません)。

ファイルシステム全体のディスク使用統計をスキャンするには、しばらく時間がかかります。これは、ニースのコマンドラインのグラフィカルな表現と、スキャンしたパスをより深くまたはより高く移動するなど、矢印キーを使用したキーボードナビゲーションが含まれています。を押してアイテムを削除することもできます D

0
Etescartz

du -hd1

すべてのディレクトリのサイズを人間が読める形式でリストします。

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
0
Boris Yakubchik

すでにベストアンサーが提供されているので、以下のコマンドを試してみました

Sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

出力

 Sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
0

元の質問ではサイズが尋ねられましたが、それがディスク上のサイズであるか、データの実際のサイズであるかは明記されていませんでした。

「du」の計算は、同じファイルシステムを使用する同じサイズのパーティションを持つサーバー間で異なる可能性があることを発見しました。ファイルシステムの特性が異なる場合、これは理にかなっていますが、それ以外の場合、理由がわかりません。 Steven Pennyの「ls | awk」という答えは、より一貫性のある答えをもたらしましたが、それでも非常に大きなファイルリストでは一貫性のない結果をもたらしました。

「find」を使用すると、XFSを使用するサーバーとEXT4を使用するサーバーを比較した場合でも、300,000以上のファイルで一貫した結果が得られました。したがって、すべてのファイルのデータの合計バイト数を知りたい場合は、次の方法で取得することをお勧めします。

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

ls -ldhを使用することもできます。

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-lは長いリスト用です。 -dはディレクトリの内容ではなくディレクトリ情報を表示するためのもので、-hは人間が読める形式でサイズを表示するためのものです。

0
fromnaboo