find命令按大小清理日志需用-size +10G精准筛选超10GB文件,限定-type f排除非普通文件,先预览再-delete,结合-mtime或truncate可提升安全性与灵活性。

直接用 find 按大小筛选并清理超大日志文件,关键在准确限定类型、大小单位和安全删除逻辑。10GB 是个明确阈值,但要注意单位写法(+10G 才表示“大于10GB”,10G 会匹配恰好10GB,容易漏掉)。
确认日志路径与文件类型
多数日志位于 /var/log 及其子目录,但也可能分散在应用目录(如 /opt/app/logs)。先缩小范围,避免全盘扫描拖慢系统:
- 只查普通文件:
-type f排除目录、符号链接等干扰项 - 可加名称过滤(非必须):
-name "*.log"或-name "error*.log",但很多日志无扩展名,慎用 - 示例起点命令:
find /var/log -type f
按大小精准筛选超过10GB的文件
-size 参数对单位敏感,必须用大写字母且带前缀:+10G 表示“严格大于10GB”。小写 g 不被支持,10G(无+)只匹配刚好10GB的文件:
- 正确写法:
-size +10G - 错误写法:
-size 10G、-size +10g、-size +10GB - 组合示例:
find /var/log -type f -size +10G
安全预览与分步清理
别一上来就 -delete。先查看有哪些文件,确认是否真可删:
- 列出详情(含大小和路径):
find /var/log -type f -size +10G -ls - 按大小倒序排列更直观:
find /var/log -type f -size +10G -ls | sort -k7nr | head -20(-k7nr表示按第7列数字逆序) - 确认无误后,再执行删除:
find /var/log -type f -size +10G -delete - 如需保留最近修改的(比如只删30天前的),加时间条件:
-mtime +30
防止误删与后续防护
巨型日志往往暴露配置缺陷。删完不是终点:
- 检查对应服务日志轮转配置(
/etc/logrotate.d/下相关文件),确保size或daily+rotate设置合理 - 临时应急可清空而非删除(保留文件句柄):
find /var/log -type f -size +10G -exec truncate -s 0 {} \; - 监控习惯化:用
du -sh /var/log/* | sort -hr | head -10定期抽查











