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