Plainnotes

用 find 清理旧文件,别写错 -mtime

2025-10-29 · 2 分钟工具

清理七天前的临时文件,写成 find /tmp -mtime 7 -delete,结果把当天的也删了一部分——-mtime 7 是“正好 7 天”,不是“7 天以前”。

正确写法是 -mtime +7。

另外几个细节:

  • -delete 隐含 -depth,但遇到非空目录还是会失败,加 -type f 明确只删文件。
  • 先 -print 看一眼要删什么,确认后再换成 -delete,这是唯一可靠的 dry run。
  • -mmin 按分钟,-atime 按访问时间,但 atime 在 relatime 挂载下不可靠。
  • find ... -delete 不做二次确认,路径里一个变量为空就可能删根目录,务必写绝对路径并测试。
find /var/tmp -type f -mtime +7 -print