如每天零点定时删除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/