このコマンドを使用して、必要なフォルダーを検索し、サイズをカウントしています。
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 行にまとめて合計金額を表示する方法はありますか?
答え1
find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -
これは、(十分に最近の?)GNU バージョンおよびを前提としていfind
ますdu
。
答え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
代替の解決策の 1 つは、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 をインストールすることもできます。
私はいつもこれを使用していますが、どのカスタム bash よりもはるかに簡単で高速です。(ディレクトリ間を移動できるので、時間を大幅に節約できます)。