我想知道是否有一个命令可以告诉我 .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}'
进一步阅读:
- du - 估计文件空间使用情况(POSIX)
- find——查找文件(POSIX)