如何删除创建时间超过7天的日志文件(不考虑修改时间)
解决方案
你之前使用的-mtime参数匹配的是文件最后修改时间,要实现按创建时间删除、忽略修改时间的需求,需要匹配文件的创建时间(birth time/crtime)作为判断条件,不同环境的具体命令如下:
1. GNU/Linux 环境(适用于绝大多数Linux发行版,如CentOS、Ubuntu、Debian等)
GNU版find支持-birthtime参数直接匹配文件创建时间:
- 先执行打印命令确认匹配的文件符合预期,避免误删:
find /path/to/logs -type f -birthtime +7 -print - 确认无误后执行删除:
find /path/to/logs -type f -birthtime +7 -exec rm -f {} \;
如果要处理的文件数量较多,可以用更高效的xargs写法:find /path/to/logs -type f -birthtime +7 -print0 | xargs -0 rm -f
注意:如果执行命令提示不支持
-birthtime参数,请确认你的系统使用的文件系统为ext4、xfs、btrfs等支持存储创建时间的格式,且GNU find版本不低于4.3.3。
2. macOS/BSD 环境
BSD系find使用-Btime参数匹配创建时间:
- 测试打印命令:
find /path/to/logs -type f -Btime +7d -print - 确认后删除命令:
find /path/to/logs -type f -Btime +7d -exec rm -f {} \;
额外提示:如果不需要递归处理日志目录下的子目录,可以在find参数中加入
-maxdepth 1限制仅遍历目标目录的一级文件。
内容的提问来源于stack exchange,提问作者Ayush Kapil
相关产品推荐
相关产品推荐

