私のハードドライブで特定の種類のファイルが占める全体のサイズをどうやって知ることができますか?

私のハードドライブで特定の種類のファイルが占める全体のサイズをどうやって知ることができますか?

.jpg ファイルの記憶領域がどれくらいになるかを知らせるコマンド(例)があるかどうか疑問に思います。同様にfind / -iname "*.jpg"、見つかった各ファイルのサイズを追加し、全体を出力します。

答え1

find ./path/to/your/drive -type f -name '*.jpg' -exec du -ch {} +

またはより速く

find /path/to/your/drive -name "*.jpg" -print0 | du -ch --files0-from=-

または簡単に言えば、

du -ch /path/to/your/drive/*.jpg | grep total

awkまたは、次の助けを借りて

find /path/to/your/drive -iname "*.jpg" -ls | awk '{total += $7} END {print total}'

私のシステムでは、ファイルサイズが7番目のフィールドに表示されます。状況が異なる場合は、それに応じて調整してください。

コメントでOPの要求に応じて、ディレクトリ内のすべての画像と全体のサイズを見つけるには、このコマンドを使用できます(@Stéphane Chazelasが提案)。

 find . -type f -exec file --mime-type {} + | sed -n 's|: image/[^[:blank:]]*$||p' | tr '\n' '\0' | du --files0-from=- -hc

または

 du -shc $(find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' | cut -d':' -f1) | grep total

答え2

あるいは、POSIXを使用して次のことを実行できます。

find . -type f -name "*.jpg" -exec du -sk {} \; |
  awk 'BEGIN{total=0};{total += $1}; END{printf "%.3f MB\n", total / 1024}'

追加資料:

関連情報