shell脚本定时删除指定几天前的文件

Posted 编程符号哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本定时删除指定几天前的文件相关的知识,希望对你有一定的参考价值。

find命令的参数:

-name   filename              #查找名为filename的文件
-perm                                #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname           #按组来查找
-mtime   -n +n                  #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                  #按文件访问时间来查GIN: 0px">
-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-ctime    -n +n                 #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-type    b/d/c/p/l/f           #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                    #查长度为n块[或n字节]的文件
-depth                             #使查找在进入子目录前先行查找完本目录
-fstype                            #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                           #查文件时不跨越文件系统mount点
-follow                           #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                             #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                           #忽略某个目录

# 示例:
# 查找当前路径下30分钟内被修改过的文件:

find ./ -mmin -30 -name "*"

# 查找当前路径下30分钟前被修改过的文件:

find ./ -mmin +30 -name "*"

# 查找当前路径下最近1天被修改过的块普通文件:

find ./ -mtime 0 -type f  

# 查找最近24小时修改的当前目录下的文件

# find . -name \'*\' -mtime 0

shell语句:

find   filepath   -option   [-print ]   [ -exec   -ok   command ]  {}  \\;

filepath: find命令所查找的目录路径;

-print: find命令将匹配的文件输出到标准输出;
-exec: find命令对匹配的文件执行该参数所给出的shell命令;相应命令的形式为’command’ { } ;
-ok: 与-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-exec command {} ;一旦查到的文件执行command操作,{} 和 ;之间有空格;

注:{ }和\\;之间的空格。
删除N天前的文件即:

find  ./ -name "*" -mtime +3 -exec -ok rm -rf {} \\;

crontab命令语法及其各个参数含义
crontab命令的语法为:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 

各个参数说明:

-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 vi
-r [UserName]: 删除目前的时程表
-l [UserName]: 列出目前的时程表
-v [UserName]:列出用户cron作业的状态
00 8,12,16 * * * /scripts/monitor/df.sh
30 2 * * * /scripts/hotbackup/hot_database_backup.sh
10 8,12,16 * * * /scripts/monitor/check_ind_unusable.sh
10 8,12,16 * * * /scripts/monitor/check_maxfilesize.sh
10 8,12,16 * * * /scripts/monitor/check_objectsize.sh
43 21 * * *                      每天的21:43 执行
15 05 * * *                每天的05:15 执行
0 17 * * *                       每天的17:00 执行
0 17 * * 1                       每周一的 17:00 执行
0,10 17 * * 0,2,3          每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * *                毎月1日从 17:00到7:10 毎隔1分钟 执行
0 0 1,15 * 1                 毎月1日和 15日和 一日的 0:00 执行
42 4 1 * *             毎月1日的 4:42分 执行
0 21 * * 1-6          周一到周六 21:00 执行
0,10,20,30,40,50 * * * * 每隔10分 执行
*/10 * * * *        每隔10分 执行
* 1 * * *         从1:0到1:59 每隔1分钟 执行
0 1 * * *         1:00 执行
0 */1 * * *        毎时0分 每隔1小时 执行
0 * * * *         毎时0分 每隔1小时 执行
2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * *       1日 和 15日的 5:30 执行

创建定时任务脚本

# !/bin/bash
find   filepath   -name "*"  -exec  rm -rf  {}  \\;

添加定时任务

crontab -e 

然后在弹出的vi对话框中输入:

1 * * * * /crontab.sh

保存并退出
出现以下错误,原因是crontab的规则书写格式错误,细心检查修改。
crontab规则书写错误
出现crontab: installing new crontab,即为创建定时任务成功。
可以通过crontab -l进行任务查看定时任务文件。


作者:符号哥
微信公众号:左侧为二维码
个人技术网站-编程符号网:http://www.itfh.cn
个人技术网站-IT源码网:http://www.itym.cn
新浪微博:https://weibo.com/u/2814576687
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

以上是关于shell脚本定时删除指定几天前的文件的主要内容,如果未能解决你的问题,请参考以下文章

Windows 定时删除指定路径下N天前的日志文件

linux系统如何自动删除几天前文件夹

Windows自动删除n天前的文件的批处理脚本

Linux 删除几天前的文件脚本

用shell脚本打包30天前的日志,格式:log20110901;并删除30天前的日志

linux定时删除N天前的文件(文件夹)