web-dev-qa-db-ja.com

検索とデュでフォルダの合計サイズを取得するにはどうすればよいですか?

Findとduを使用して、「bak」という名前のディレクトリのサイズを取得しようとしています。

私がする : find -name bak -type d -exec du -ch '{}' \;

ただし、合計ではなく、「bak」という名前の各フォルダのサイズを返します。

とにかくそれらを得るために?ありがとう:)

21
Piokaz

_-exec_の代わりに xargs(1) を使用します。

_find . -name bak -type d | xargs du -ch
_

_-exec_は、見つかったファイルごとにコマンドを実行します( find(1) のドキュメントを確認してください)。 xargsにパイピングすると、それらのファイル名を集約して、duを1回だけ実行できます。あなたも行うことができます:

_find -name bak -type d -exec du -ch '{}' \; +
_

findのバージョンがサポートしている場合。

23
Carl Norum

du -hcsをお試しください。マンページから:

 -s, --summarize
      display only a total for each argument
4
Lars Kotthoff

検索結果をduにフィードします。

du -shc $(find . -name bak -type d)
2
rvrsd

ファイルが多い場合は、-exec ... +を実行する 複数回 を実行すると、複数の小計が表示されます。

別の方法は、findの結果をパイプ処理することです。

find . -name bak -type d -print0 | du -ch --files0-from=-
1
bitozoid