1、find中的-exec参数
实例:
按时间删除命令:
删除当前目录下30天以前的所有文件:
find . -type f -ctime +30 -exec rm -fr {} \;
删除当前目录下30天以前的所有目录:
find . -type d -ctime +30 -exec rm -fr {} \;
删除/oracle/123目录下3天以前的文件:
find /oracle/123 -type f -ctime +3 -exec rm -rf {}\ ;
删除当前目录下30天以前,名称匹配"*awr*.html"的文件:
find . -type f -name "*awr*.html" -ctime +30 -exec rm -fr {} \;
find命令中的-mtime参数
有关find -mtime这个参数的使用确实是我以前犯过错误。
今天又有人问到我这个问题,我觉得有必要把这个问题在这里记录下来。
mtime参数的理解应该如下:
n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。
例如:
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
为什么-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢?
因为n值只能是整数,即比1大的最近的整数是2,所有-mtime+1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。
-exec command:command为其他指令,-exec后面可再接额外的指令来处理搜索到的结果
图片.png
-exec 参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。