shell脚本定时清除指定目录下一个月之前创建的文件

定时清除指定目录自动生成的文件

解决办法

在一个常用的目录 cd /data/web/php-sh/内创建shell脚本文件.sh

touch delete_log.sh
vim delete_log.sh
//内容如下
#!/bin/bash
//定义一下要删除的目录
del_url="/data/web/api-log/logs"
//输出要删除的目录
echo $del_url
//执行删除命令
find $del_url -mtime +30 -type f | xargs rm -f

注释:
1、find 是查找命令,$del_url是变量值为/data/web/api-log/logs
2、-mtime +30 是30天之前的文件
以当前时间点开始算起,+表示往左,从该时间点开始再继续往更早推,可以称作xx以外;-表示往右,从该时间点算起往后的时间推,可以称作xx以内;没有加减号表示据此此前第N天
-type f 是查找的为文件类型
xargs 将其接受的字符串(find $del_url -mtime +30 -type f )查询出来的值做为rm -f 的一个命令参数来运行rm命令

定时任务

crontab -e
内容如下:

30 1 1 * * /bin/bash /data/web/php-sh/delete_log.sh

注释:

1、设定为每个月1号晚上1点30分执行脚本.当然你也可以根据你自己的需求去整.

删除目录内,指定文件后缀的命令

find /root/sqlbak -mtime +30 -type f -name *.gz -exec rm -f {} ;

注意:最后一个\和{}之间是有空格的,否则报错:

find: 遗漏“-exec”的参数

出现这个问题很有可能是:
1、{} 和 \ 之间没有空格
2、\ 和 ; 之间有空格!

正确的写法:
{} ;

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/86136512