web-dev-qa-db-ja.com

ファイルのduのみでサイズを取得する

Duコマンドを使用して、すべてのファイルとそのサブディレクトリ内のすべてのファイルのサイズを取得するにはどうすればよいですか。

次のコマンドを実行して、すべてのファイル(およびサブディレクトリ内のファイル)のサイズを取得しようとしています

find . -type f | du -a

しかし、これはフォルダサイズも出力します。すべてのファイルとサブディレクトリ内のファイルのサイズのリストを取得するにはどうすればよいですか?私も試しましたexec flagですが、findの結果をduに実行した後、出力を別のコマンドにパイプする方法がわかりません。

オペレーティングシステムは、kshシェルを使用したAIX 6.1です。

56

私は通常-execユーティリティ。このような:

find . -type f -exec du -a {} +

GNU findを使用して、bashとkshの両方で試してみました。AIXを試したことがありませんが、findのバージョンには-exec構文。

次のスニペットは、リストを最初に最大のものからソートします。

find . -type f -exec du -a {} + | sort -n -r | less
60
rahmu

GNUユーティリティがある場合は、

find . -type f -print0 | du --files0-from=-
16
jw013

私は通常使用します:

find . -type f -print0 | xargs -r0 du -a

引数が渡されない場合でも、Xargsは通常コマンドを呼び出します。 xargs du </dev/nullは引き続き呼び出され、xargs -r du </dev/nullはduを呼び出しません。 -0引数は、改行で終了するのではなく、ヌルで終了する文字列を探します。

次に、通常、最後に| awk '{sum+=$1} END {print sum}'を追加して合計を取得します。

9
Arcege

これは、長いパラメーター名と人間による並べ替えのバージョンです。

find . -type f -exec du --human {} + | sort --human --reverse | head

また、-a/--allduに渡します。

2
Tarrasch