duコマンドを使用して、すべてのファイルとサブディレクトリ内のすべてのファイルのサイズを取得する方法。
すべてのファイル(およびサブディレクトリ内のファイル)のサイズを取得するために、次のコマンドを試しています。
find . -type f | du -a
ただし、これもフォルダサイズを印刷します。サブディレクトリ内のすべてのファイルとファイルのサイズの一覧を取得するには?私もこれを試しましたが、exec flag
結果find
をdu
。
オペレーティングシステムはkshシェルを含むAIX 6.1です。
答え1
私は通常この-exec
ユーティリティを使います。このように:
find . -type f -exec du -a {} +
私はbashとkshでGNU findを使ってみました。私はAIXを使ったことがありませんが、あなたのfindバージョンにいくつかの構文があると確信しています-exec
。
次のコードスニペットは、リストを最大のものからソートします。
find . -type f -exec du -a {} + | sort -n -r | less
答え2
GNUユーティリティがある場合は試してください。
find . -type f -print0 | du --files0-from=-
答え3
私は一般的に以下を使用します。
find . -type f -print0 | xargs -r0 du -a
Xargsは通常、引数が渡されていなくてもこのコマンドを呼び出しますが、xargs du </dev/null
duxargs -r du </dev/null
は呼び出されません。この-0
パラメータは、改行で終わる文字列の代わりにNullで終わる文字列を探します。
次に、通常の| awk '{sum+=$1} END {print sum}'
終わりに合計を追加します。
答え4
完全性を期すために許容される回答は、質問で要求されたものと正確に一致しますが、du
ディスクdu
使用量(ファイルが保存されているパーティションのブロックサイズによって異なります)が印刷されることに注意してください。ファイルサイズ(ファイルサイズに関係ありません)サイズは、保存する場所に関係なく一定です。別のアプローチは、ディスク使用量の代わりにファイルのバイト数を印刷することです
find . -type f -printf '%s %f\n'
(またはfind . -type f -printf '%s %f\n' | sort -k2
名前でソート)。