web-dev-qa-db-ja.com

du -h --max-depth = 1は時間がかかります

ディレクトリ内のファイルとディレクトリのサイズを計算しようとすると、時間がかかります。私が使用したコマンドはdu -ch --max-depth=1

ファイルとフォルダーの合計サイズを計算する他の方法はありますか?

ありがとう

17
Özzesh

コマンドduは、デフォルトで、ディレクトリ内のすべてのファイルとすべてのサブディレクトリのディスク使用量を(再帰的に)取得します。したがって、duが費やす時間は、分析されるファイルの数に関係します。オプション-sまたは--summarizeおよび--max-depthは、コマンドの出力にのみ影響します(スキャン自体には影響しません)。

ファイルスキャンを制限する一部のduオプションは、-one-file-system、-exclude、および--exclude-fromです。

サブディレクトリに再帰的に戻りたくない場合は、代わりにfindを使用できます。これにより、分析するファイルをより詳細に制御できます。ただし、ディスク使用量を再帰的に合計することはできません。

find /path/to/dir -maxdepth 1 -printf  "%k\t%p\n"

%kは常に1kブロックのディスク使用量を返し、スパースファイルの報告されたディスク使用量は、lsコマンドの%sが返すファイルサイズよりも小さいか、わずかに大きい場合があることに注意してください。 。したがって、 '%k'は単一ファイルに対してduコマンドのように動作します。

findduの機能を組み合わせる場合は、両方の機能を組み合わせることができます。

find . -maxdepth 1 -name "xyz*" -print0 | du --files0-from=-
22
Jacob