Duコマンドを使用して、すべてのファイルとそのサブディレクトリ内のすべてのファイルのサイズを取得するにはどうすればよいですか。
次のコマンドを実行して、すべてのファイル(およびサブディレクトリ内のファイル)のサイズを取得しようとしています
find . -type f | du -a
しかし、これはフォルダサイズも出力します。すべてのファイルとサブディレクトリ内のファイルのサイズのリストを取得するにはどうすればよいですか?私も試しましたexec flag
ですが、find
の結果をdu
に実行した後、出力を別のコマンドにパイプする方法がわかりません。
オペレーティングシステムは、kshシェルを使用したAIX 6.1です。
私は通常-exec
ユーティリティ。このような:
find . -type f -exec du -a {} +
GNU findを使用して、bashとkshの両方で試してみました。AIXを試したことがありませんが、findのバージョンには-exec
構文。
次のスニペットは、リストを最初に最大のものからソートします。
find . -type f -exec du -a {} + | sort -n -r | less
GNUユーティリティがある場合は、
find . -type f -print0 | du --files0-from=-
私は通常使用します:
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}'
を追加して合計を取得します。
これは、長いパラメーター名と人間による並べ替えのバージョンです。
find . -type f -exec du --human {} + | sort --human --reverse | head
また、-a/--all
をdu
に渡します。