安全删除旧日志需先预览再执行:用-print或-ls确认匹配文件,再用-exec rm -f {} \;或更优的-delete删除;配合-maxdepth和-type f提升精准性与安全性。

用 find 配合 -exec 删除旧日志,关键在于“安全”二字——先确认、再执行、防误删。
先预览匹配结果,避免误删
别急着删,先用 -print 或 -ls 看清楚哪些文件会被命中:
-
find /var/log -name "*.log" -mtime +30 -print—— 列出 30 天前的 log 文件路径 -
find /var/log -name "*.log" -mtime +30 -ls—— 还能显示权限、大小、修改时间,更直观
用 -exec 配合 rm -f 安全删除
确认无误后,用 -exec rm -f {} \; 批量删除({} 是占位符,\; 表示命令结束):
find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;- 注意:不要写成
rm -f {}后漏掉\;,否则 find 会报错或行为异常 -
-f可避免交互提示,适合脚本;若想每删一个都确认,可用-i(但批量时不推荐)
加 -delete 替代 -exec 更简洁(推荐)
如果只是删除,-delete 比 -exec rm 更高效且不易出错:
find /var/log -name "*.log" -mtime +30 -delete- ⚠️ 注意:
-delete要求路径必须可写,且默认隐含-depth(深度优先),不会因父目录先删导致子项失败 - 它不能和
-exec混用,且不支持复杂命令(比如压缩后再删),纯删场景首选
加 -maxdepth 和 -type 提高精准度
防止递归过深或误删非普通文件:
find /var/log -maxdepth 2 -name "*.log" -type f -mtime +30 -delete-
-maxdepth 2限制只查两层子目录,避免扫到 /var/log/old/app/… 下的嵌套备份 -
-type f确保只删普通文件,跳过目录、符号链接、socket 等,更安全











