パターン(例: *.JPG)によるディスク使用量のフィルタリングを計算するにはどうすればよいでしょうか?

パターン(例: *.JPG)によるディスク使用量のフィルタリングを計算するにはどうすればよいでしょうか?

ディレクトリ内の一部のファイルによってのみ消費されるディスク容量を再帰的に計算するにはどうすればよいでしょうか?

答え1

find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1

  1. -iname大文字と小文字を区別せずに検索します
  2. -print0NUL改行の代わりに書き込む
  3. --files0-from=-NUL改行の代わりに読み取り、stdin引数の代わりに読み取ります
  4. -h結果を人間が読める形式で出力します(例:1Kの代わりに1024
  5. -c合計を出力する(例23G:)
  6. tail -1個々のファイルサイズを省略し、合計のみを出力します。

答え2

zsh

zmodload zsh/stat

stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))

名前が で終わるすべてのファイル.jpg(修飾子付きの隠しファイルを含むD) の累積ディスク使用量を出力します。同じファイルへのハード リンクが複数ある場合、それらのディスク使用量は複数回カウントされることに注意してください (これはほとんどのdu実装とは異なります)。

ファイルの一部がディレクトリでは、ディレクトリ ファイル自体のディスク使用量のみがカウントされ、それらのディレクトリをトラバース中に見つかったファイルのディスク使用量はカウントされません ( とのもう 1 つの違いdu)。

関連情報