再帰的にディレクトリのサイズを見つけて合計を取得します。

再帰的にディレクトリのサイズを見つけて合計を取得します。

このコマンドを使用して、必要なフォルダを見つけてサイズを計算します。

find . -type d -name 'tmp_c*' | xargs du -hcs {} \; + 

私のバージョンのfindは-execをサポートしていません。しかし、これはうまくいくかもしれません。しかし、私の検索文字列を含むディレクトリの総数が正しいかどうかはわかりません。命令を実行してlessに接続すると、各フォルダのサイズを計算した後、時々合計を出力することがわかります。このように:

140K    ./r/g/userid/attach/tmp_c_241091464_2
68K     ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G    total

出力をファイルにリダイレクトしてから合計をgrepすると、次のような結果が得られます。

2.3G    total
978M    total
1.1G    total
2.0G    total
1.1G    total

考えるこれは私に正しい番号を与えます。しかし、このコマンドをさらに一歩進め、全体の内容を一行にまとめるにはどうすればよいですか?

答え1

find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -

これは(十分に新しい?)GNUバージョンfinddu

答え2

これはうまくいくはずで、私のEL4ボックスでテストされています...これは私が所有している最も古いボックスであり、私をつぶします。 EL3の使い方がわかりません。

find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1

完成したcoreutils-4.5.3-26

答え3

https://stackoverflow.com/a/1323769/799204

代替ソリューションはawkを使用することです。

ただし、この場合はスクリプトを調整する必要があります。

find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'

出力は10進形式で表示されます。

答え4

epelが3ではなく5から始まることを確認したので、唯一のオプションはカスタムスクリプトです。

ncduをインストールすることもできます。

https://dev.yorhel.nl/ncduit

私はいつもそれを使用しており、任意のカスタマイズされたbashよりも簡単で高速です。 (カタログを閲覧し、多くの時間を節約できます)。

関連情報