Linux定时清理n天前的文件

如每天零点定时删除30天前的文件, -delete 为 find 命令的参数

0 0 * * * find /path/to/your/files/* -mtime +30 -type f -delete

或者加上名称过滤 -name 参数,这样写:

0 0 * * * find /path/to/your/files/* -mtime +30 -type f -name "*.log" -exec rm -rf {} \;

这对于 crontab 定时删除N天前的日志文件很有帮助,注意 find 会寻找目录下(包括子目录下)所有的文件。

如果你希望先查看哪些文件会被删除,可以先运行不带 -exec rm {} \;find 命令先进行列出文件查看。

具体来说,-exec rm {} \; 的意思如下:

  • -exec:告诉 find 命令对找到的每个文件执行后面的命令
  • rm:是要执行的命令,代表删除文件
  • {}:是一个特殊的字符串占位符,对于find命令找到的每个文件,它都会被替换成那个文件的名称
  • \;:标记 -exec 命令的结束。由于分号(;)在shell中有特殊意义,所以需要用反斜杠(\)进行转义,这样shell就不会将其解释为命令的结束,而是将其传递给 find 命令作为 -exec 选项的一部分

参考文章:
https://www.vionblog.com/linux-delete-files-older-than-x-days/

Author: thinkwei

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注