linux 定时删除指定时间文件及目录

432 阅读1分钟

需求说明 每日凌晨0点定时删除/temp目录下的所有一个月未被访问的文件。

脚本实现 linux 终端输入crontab -e,添加定时任务脚本命令

在文件末尾追加

0 0 * * * find /temp -atime +30 -exec rm -rf {} \;

参数说明 find /temp:查找temp目录 -atime:访问时间 +30 :30天以前 -exec :执行其后面的命令 rm -rf {} :删除查找到的内容,{} 代表find查找到的内容 ; :结束符号,\用来转义 命令格式

find 对应目录 -name "文件名" -type f -mtime +n -exec rm -rf {} \;

-type

f:普通文件

d:目录

-mtime

修改时间(modify time) 即modify time,指文件内容被修改的最后时间。

-atime

访问时间(access time) 是指access time,指文件中的数据最后被访问的时间

-ctime

状态变更时间(change time) 即change time文件状态改变时间,指文件的元数据发生变化的时间,比如权限、所有者等,通过chmod修改文件属性,ctime就会被修改。 n

+n 第n天之前的,不包括第n天当天

-n 第n天到今天的,不包括第n天当天

备注: n为整数,以天为单位,0x24表示今天,1x24表示昨天;n有一位小数,以小时为单位,如0.5x24;n有两位小数,以分钟为单位,如0.55x24;

脚本验证 查看定时任务是否被加入定时任务列表

[root@localhost ~]# crontab -l 查看文件是否被删除,删除在/temp目录下1天内创建的后缀为.log的文件

0 0 * * * find /temp -name "*.log" -mtime -1 -exec rm -rf {} \;