linux 删除指定日期之前的文件

608次阅读
没有评论

两种方法:

1. 在一个目录中保留最近三个月的文件,三个月前的文件自动删除。

find /email/v2_bak -mtime +92 -type f -name *.mail[12] -exec rm -rf {} \;/email/v1_bak –设置查找的目录;

-mtime +92 –设置时间为91天前;
-type f –设置查找的类型为文件;
-name *.mail[12] –设置文件名称中包含mail1或者mail2;
-exec rm -f –查找完毕后执行删除操作;

将此命令写入crontab后即可自动完成查找并删除的工作了。

2. 或者用:find . -ctime +40 -type f | xargs rm -rf

简名 全名 中文名 含义
atime access time 访问时间 文件中的数据库最后被访问的时间
mtime modify time 修改时间 文件内容被修改的最后时间
ctime change time 变化时间 文件的元数据发生变化。比如权限,所有者等

 

 

 

 

1、编写清理日志脚本clear.sh

#!/bin/sh
find /opt/bak -mtime +6 -name “*.log” -exec rm {} \;
find /opt/bak -mtime +6 -name “*.dmp” -exec rm {} \;

2、给脚本授权

chmod +x clear.sh

3、加入定时执行任务

vi /etc/crontab

在最后加入:00 2 * * * root /opt/sh/clear.sh

4、重启crontab服务

service crond restart

删除目录举例

find /volume1/homes/admin/用友备份/ZT001/ -mtime +15 -type d -exec rm -rf {} \;

 

近期在业务中,给定的磁盘只有22T容量,为了避免爆盘,业务需要定时清除数据,根据网上的资料总结了一下设置方法:可以使用find命令

find 路径 -mtime +天数 -type f -name “文件名” -exec rm -rf {} ;

代码语言:javascript
复制
find /tmp -mtime +30 -type f -name "*" -exec rm -rf {} \;
/tmp --设置查找的目录;
-mtime +30 --设置修改时间为30天前;
-type f --设置查找的类型为文件;其中f为文件,d则为文件夹
-name "*" --设置文件名称,可以使用通配符;
-exec rm -rf --查找完毕后执行删除操作;
 {} \; --固定写法

另外的方法大同小异:

代码语言:javascript
复制
[hadoop@oyhadoop021 nokia_temp]$#find /tmp -mtime +30 -type f | xargs rm -rf
代码语言:javascript
复制
可以吧这个命令写到脚本里,
代码语言:javascript
复制
cleandata.sh
代码语言:javascript
复制
find /tmp -mtime +30 -type f -name "*" -exec rm -rf {} \;
代码语言:javascript
复制
配置可执行
代码语言:javascript
复制
chmod u+x ./cleandata.sh

配置到crontab

代码语言:javascript
复制
crontab -e
0 0 * * *  /home/username/cleandata.sh > /dev/null 2>&1
每天零点自动执行
其中:
第一个*号表示时间中的 分钟  取值范围:0-59
第二个*号表示时间中的 小时  取值范围:0-23
第三个*号表示一个月中的第几天,取值范围:1-31
第四个*号表示一年中的第几个月,取值范围:1-12
第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0707都表示星期天

正文完
 0
withero
版权声明:本站原创文章,由 withero 于2024-07-29发表,共计1504字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码