linux 查找一天前的文件,Linux删除指定时间之前的文件

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

例如,在一个目录中保留最近7天的文件,7天前的文件自动删除。

find . -mtime +7 -type f -name *.mail_[12] -exec rm -rf {} \;

说明:

. –设置查找的目录;

-mtime +7 –设置时间为7天前;-mtime -7 表示7天之内;-mtime 7 表示7天前的那一天;-mtime 0  表示1天之内;

-type f –设置查找的类型为文件,这个参数一定要有,目录和其他字节啥的不要管;

-name *.mail[12] –设置文件名称中包含mail_1或者mail_2;

-exec把find到的文件名作为参数传递给后面的命令行,代替{}的部分,-exec rm -f –查找完毕后执行删除操作。-exec后便跟的命令行,必须用“ \;”结束。

你可能会在其他地方看到与 -exec rm {} \;  不同的删除方式 xargs rm -rf,两者都可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exec选项,这样当文件数量较多的时候,就可能会出现“参数太多”之类的错误,相比较而言,后者就可以避免这个错误,因为xargs命令会分批次的处理结果。

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

另外,说明一下 find -mtime +N/-N/N 的时间算法:

以当前时间点开始算起,

+表示往左,从该时间点开始再继续往更早推,可以称作xx以外;

-表示往右,从该时间点算起往后的时间推,可以称作xx以内;

没有加减号表示据此此前第N天。

一天是指当前系统时间算起的,向前减24小时。

对于 find . -mtime N 实际上你应该这样理解:N * 24

+1 表示 1 * 24 +24小时以外;

+0 表示 0 * 24 +24小时以外;

1 表示 1 * 24 + 24 到 24 之间;

0 表示 0 *24 + 24 到 0 之间;

-1 表示 0*24 +24 内,甚至为未来时间…

可以用数学公式来体现:

+n -- n天以前的文件

((n+1)*24h, -∞)

n -- 前n天的文件

(0, n*24h)

-n -- 天以内的文件

[n*24h,(n+1)*24h]

图释:

32005a2b4d25a435e318535df88bc2a4.pngfind -mtime +N/-N/N 的时间算法图释

更多用法:

find . -amin -10 # 查找在系统中最后10分钟访问的文件

find . -atime -2 # 查找在系统中最后48小时访问的文件

find . -empty # 查找在系统中为空的文件或者文件夹

find . -group cat # 查找在系统中属于 groupcat的文件

find . -mmin -5 # 查找在系统中最后5分钟里修改过的文件

find . -mtime -1 #查找在系统中最后24小时里修改过的文件,结果和 find . -mtime 0 一样

find . -nouser #查找在系统中属于作废用户的文件

find . -user fred #查找在系统中属于FRED这个用户的文件

最后,给个示例。

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

#!/bin/sh

find . -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 . -type f -mtime +5 | xargs ls -l --time-style='+%Y-%m-%d'

或者

find . -type f -mtime +5 -exec ls -l --time-style='+%Y-%m-%d' {} \;

切记 –time-style要和 -l 选项一起使用。格式可以修改,比如’+%Y-%m-%d’ 只显示日期。更简单的方法是:ls -l –full-time

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值