另外,说明一下
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]
更多用法:
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