パターン(例:* .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の実装とは異なります)。

一部のファイルがまたはタイプの場合目次は、ディレクトリファイル自体のディスク使用量のみを計算し、そのディレクトリをナビゲートするときに見つけることができるファイルは計算しません(との別の違いdu)。

関連情報