ディレクトリのおおよそのサイズを取得します(すべてのファイルとサブディレクトリを再帰的に含めます)


10

ディレクトリ(再帰的に、そのすべてのサブディレクトリを含む)の正確なサイズをすばやく取得する方法はありますか?サブディレクトリのサイズは必要ありません。レポートされた合計サイズに再帰的に含める必要があることを意味します。

失敗した場合、おおよそのサイズを取得する方法は?dfファイルシステム全体に対して迅速な応答が得られるようなものを考えていますが、今回は特定のディレクトリ(およびそのサブディレクトリ)についてです。

使用duするソリューションは、ディレクトリに数千のサブディレクトリが含まれている場合、時間がかかるようです。


du私が知っている唯一の方法は、使用することです。問題は、データが階層全体に分散しているため、カウントを取得するためにツールで集計する必要があることです。
slm

回答:


15

これは非常に便利です。

du -sm Directory

または内部ディレクトリの内訳を取得する

du -sm Directory/*

そして多くのサブディレクトリがある場合は並べ替え

du -sm Directory/* | sort -n 

-mオプションを使用する理由は、メガバイトの出力を確実に取得するためです。私はこれを視覚的に比較する方が簡単だと思います(たとえば、999 KBと1MBと999000MBと1000000MBを比較するなど、ユニットの混合を取得していない場合)、追加の利点は、出力をソートに渡すことができることです。

すべてをバックグラウンドに置き、出力をリダイレクトします。これまでに使用した方法には時間がかかります。時間がかかる多くのファイルのトラバースです。

du -sm Directory/* | sort -nr > ~/cacheDu.log &

逆の並べ替えに注意してください。大きなものが最初に表示されます。これをn分ごとに実行するcronに追加します。

次に、エイリアスducacheを使用すると、かなり最新のディレクトリを使用できます。

export alias ducache='head -n 15 ~/cacheDu.log'

@X Tianがglenn jackmanの回答に対するコメントを参照
Marcus Junius Brutus 14

私は、ソート-mと使用する理由であると認められ、
X天

3
を忘れないでくださいshopt -s dotglob。そうしないdu -sm Directory/*と、隠しファイル/ディレクトリはカウントされません。
ドミトリーグリゴリエフ2015年

@XTian申し訳ありませんが、いくつかのコマンドが役に立たないようにできませんでした。
Mavenのツ

私からそれを得た、ここで
Mavenのツ

5
du -sh "$dir"

「人間」形式の出力の合計サイズの概要が表示されます。


の代替を探していたのでdu、試してみましたがfind、まったく同じです。

$ find . -printf "%s\n" | { 
    sum=0
    while read size; do ((sum+=size)); done
    echo $sum
}
122865202884
$ du -sb .
122865202884    .

おかげで、私はそれを知っていduますが、正確な結果が得られるので時間がかかりすぎます。私は素早いおおよその答えを提供するツール/コマンドを望んでいました。
マーカスジュニウスブルータス2014

ありますがdf、それはファイルシステム全体で機能します。
グレン・ジャックマン、2014

1

私の答えは気に入らないかもしれませんが、あなたがやりたいことを行う最善の方法は、cronを使用してバックグラウンドで「du -s」を定期的に実行し、結果をファイルに保存することです。次に、概算値が必要な場合は、ファイルの値を使用します。duを実行する頻度を決定します。値を取得するより速い方法がわかりません。コマンドduは、それが行うことに対して効率的です。

あなたがこれを非常に迅速に行うことができる他の唯一の方法は、ディレクトリ用のファイルシステムを作成することです。そうすれば、dfはあなたが非常に迅速にあなたが望む答えを得るでしょう。

ディレクトリ以外のファイルシステムのすべてを知る方が速い場合は、ファイルシステムに対してdfを実行し、ディレクトリ以外のすべてに対してduを実行して減算することができます。


0

(1行の印刷ではなく)ニーズに正確に適合しませんが、他のソリューションよりも簡単です。

du -a -h | sort -hr | head -2

このコマンドは、ディレクトリとサブディレクトリのサイズ、および現在のディレクトリで最大のファイルまたはサブディレクトリのサイズを提供します。

PS:これhead -2は、サブディレクトリが現在のディレクトリのすべての場所を占め、現在のディレクトリの前に待機する場合に使用します。

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