多层级目录中批量清理旧日志需用find精准定位并安全执行:先确认路径(如/var/log/、/opt/app/logs/)和后缀(.log、.log.gz等),用-mtime +n筛选修改超n+1天的文件,执行前先-preview(-ls),再-delete或-exec rm;可加-maxdepth、! -name排除活跃日志,-size过滤小文件,清理前建议备份。

在多层级目录中批量查找并清理指定后缀的旧日志文件,核心是用 find 精准定位 + 安全执行。不建议用简单通配符(如 rm *.log)或无范围递归,容易误删、漏删或报错。
明确目标路径和日志特征
先确认日志实际存放位置,避免全盘扫描:
- 系统级日志通常在
/var/log/及其子目录(如/var/log/nginx/、/var/log/journal/) - 应用日志常见路径包括
/opt/app/logs/、/home/app/logs/、/data/logs/ - 典型后缀不止
.log,还有.log.gz、.out、.err、.journal等,需按需扩展匹配
用 find 按修改时间精准筛选
-mtime +N 是清理“旧”日志的关键参数,注意它表示“最后修改时间早于 N+1 天前”,不是“恰好 N 天”。例如:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
-mtime +30→ 修改时间在 31 天前及更早的文件(推荐用于常规归档清理) -
-mtime +7→ 适用于测试环境或高频轮转场景 - 如需按分钟级控制(比如清理 2 小时前的临时日志),可用
-mmin +120
安全执行:先预览,再删除
绝不要跳过验证步骤。推荐两步走:
- 先列出将被处理的文件:
find /var/log -type f \( -name "*.log" -o -name "*.log.gz" -o -name "*.out" \) -mtime +30 -ls - 确认无误后执行删除(要求 find 版本 ≥4.2.3):
find /var/log -type f \( -name "*.log" -o -name "*.log.gz" -o -name "*.out" \) -mtime +30 -delete - 若版本较老,改用
-exec rm {} +替代-delete,效率更高且兼容性强
补充实用技巧
提升准确性和安全性:
- 加
-maxdepth 3限制搜索深度,防止意外钻入深层临时目录 - 用
! -name "current.log"排除正在写入的活跃日志(需结合业务确认文件名) - 对压缩日志(如
.log.gz),可加-size +1M过滤掉空或极小文件,避免误删残留 - 清理前建议打包备份关键日志:
find /var/log -name "*.log" -mtime +90 -print0 | xargs -0 tar -czf old-logs-$(date +%F).tar.gz










