Linux如何统计目录下仅满足指定修改/创建日期条件的文件总大小
时间条件筛选目录大小统计方法
可以实现,du本身不自带时间过滤能力,配合find命令即可完成需求:
按最后修改时间统计
示例:统计/opt/data目录下,最后修改时间晚于2024年1月1日的文件总大小:
find /opt/data -type f -newermt "2024-01-01" -print0 | du -ch --files0-from=- | tail -n 1
参数说明:
-newermt "指定日期":筛选最后修改时间晚于目标日期的文件,支持YYYY-MM-DD、YYYY-MM-DD HH:MM等常见时间格式-print0与du的--files0-from=-配套使用,兼容含空格、特殊字符的文件名,避免统计错误-h输出人类可读的容量单位(如G、M),需要精确字节数可替换为-b;-c参数要求输出总计值,tail -n 1仅保留总计行
按创建时间统计
Linux环境(ext4、XFS等标准文件系统)下,将上述命令的-newermt替换为-newerct即可按创建时间筛选:
find /opt/data -type f -newerct "2024-01-01" -print0 | du -ch --files0-from=- | tail -n 1
macOS环境需替换为-newerBt参数实现创建时间筛选。
兼容旧系统的通用方法
如果你的系统不支持上述-newermt/-newerct参数,可以通过临时参考文件实现时间筛选:
- 生成指定时间的参考文件
touch -d "2024-01-01 00:00:00" /tmp/time_ref
- 筛选比参考文件更新的文件统计大小
find /opt/data -type f -newer /tmp/time_ref -print0 | du -ch --files0-from=- | tail -n 1
- 清理临时参考文件
rm /tmp/time_ref
内容的提问来源于stack exchange,提问作者giovandrea
相关产品推荐
相关产品推荐

