如何统计目录及子目录下指定格式文件的总数量与总占用大小
统计目录下JPG文件数量及总大小的实现方法
基础命令用法(基于你已写的find框架补充)
你写了一半的find . -type f -name "*.jpg" -exec可以直接拼接du命令完成大小统计,完整写法如下:
# 统计所有JPG文件总大小 find . -type f -name "*.jpg" -exec du -ch {} + | tail -n 1
其中{} +是将所有匹配到的文件批量传递给du命令,避免逐个调用du的性能损耗,也能兼容带空格、特殊字符的文件名。
单条命令同时统计数量+大小
无需执行多次find,一次搜索即可同时得到两个结果:
find . -type f -name "*.jpg" -exec sh -c 'echo "总数量:$(($#))"; du -ch "$@" | tail -n 1' _ {} +
输出示例:
总数量:128 2.3G 总用量
可复用脚本实现
如果需要经常使用,可以写成bash脚本,支持自定义搜索目录,同时自动忽略大小写匹配.JPG后缀的文件:
#!/bin/bash # 统计指定目录下所有JPG文件的数量和总占用大小 SEARCH_DIR=${1:-.} # 无参数时默认搜索当前目录 # 执行统计 find "$SEARCH_DIR" -type f -iname "*.jpg" -exec sh -c ' echo "搜索目录:$1" echo "JPG文件总数量:$(($#-1))" echo "总占用大小:$(du -ch "${@:2}" | tail -n1 | awk "{print \$1}") ' _ "$SEARCH_DIR" {} +
使用方法:
- 保存代码为
count_jpg.sh - 赋予执行权限:
chmod +x count_jpg.sh - 运行:
- 统计当前目录:
./count_jpg.sh - 统计指定目录:
./count_jpg.sh /home/yourname/pictures
- 统计当前目录:
内容的提问来源于stack exchange,提问作者ajnair95
相关产品推荐
相关产品推荐

