我如何知道硬盘驱动器中特定类型文件占用的总大小?

我如何知道硬盘驱动器中特定类型文件占用的总大小?

我想知道是否有一个命令可以告诉我 .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}'

在我的系统上,文件大小显示在第七个字段中,如果您的情况不同,请进行相应调整。

根据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}'

进一步阅读:

相关内容