You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bash中统计指定日期对应文件夹的磁盘占用量

Bash环境下统计特定日期文件夹总占用空间方案

通用方案(按文件夹修改时间查询)

适合绝大多数场景,命令如下:

find /your/target/root/path -type d -newermt "2024-05-20 00:00:00" ! -newermt "2024-05-20 23:59:59" -print0 | du -ch --files0-from=- | tail -n 1

参数说明:

  • /your/target/root/path 替换为你要扫描的根目录路径
  • -type d 限定只扫描文件夹,排除普通文件
  • -newermt "时间" 匹配修改时间晚于指定时间的文件夹,搭配!取反后,两个参数组合即可锁定对应日期的时间范围,按需替换成你要查询的日期即可
  • -print0 与du的--files0-from=- 配对使用,兼容带空格、特殊字符的文件夹名,避免统计异常
  • du -ch 统计大小,-c输出总和、-h返回人类可读的单位(G/M/K),需要精确字节数的话把-h换成-b即可
  • tail -n 1 只输出最终总大小,不需要看每个文件夹的单独大小可保留,去掉则会打印所有匹配到的文件夹的大小

按文件夹创建时间查询

如果需要匹配文件夹的创建时间而非修改时间,只要你的文件系统支持birth time(ext4、xfs、btrfs等主流文件系统均支持,GNU find 4.3.3以上版本可用),把命令中的-newermt替换为-newerBt即可:

find /your/target/root/path -type d -newerBt "2024-05-20 00:00:00" ! -newerBt "2024-05-20 23:59:59" -print0 | du -ch --files0-from=- | tail -n 1

海量文件夹场景性能优化

  • 仅需要统计根目录下第一层级的文件夹时,给find添加-maxdepth 1参数,可避免递归扫描子目录,性能提升非常明显
  • 不要使用find | xargs du的写法,文件夹数量过万时容易出现参数过长报错,本方案用的--files0-from直接从标准输入读入路径,内存占用更低、稳定性更好
  • 高频查询的场景可配置cron定时任务,每天凌晨自动统计前一天的大小写入日志,避免每次查询全量扫描

注意事项

  • du默认统计的是磁盘实际块占用,会自动对硬链接去重,符合实际磁盘占用的统计需求;如果需要统计文件夹内容的实际大小(不含块对齐浪费的空间),给du添加--apparent-size参数即可

内容的提问来源于stack exchange,提问作者Rainer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:36:05