前言:关于find命令
优劣对比:常用的grep只能通过文本内容过滤(行)查找文件,而locate 数据库【依据/var/lib/mlocate内的数据库记载,找出使用者输入的关键字档名】查找却是模糊匹配,将指定的字符串跟整个路径进行匹配 -i 忽略大小写 -n N 只显示匹配到的前N个文件。而此时find命令则体现出其强大之处。
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令【它是搜索硬盘来查找文件】在该文件系统中同样有效,只要你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
一。find命令的一般形式为:
find [PATH] [option] [action]
二。find命令的参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
三。find命令选项:
1.与时间有关的选项,共有-atime,-ctime与-mtime【-atime表示的是访问时间;-ctime表示被改变文件状态的时间;-mtime表示被修改文件内容的时间】,以-mtime说明
-mtime n:n为数字,意思是在n天之前的【一天之内】被更改过内容的文件;
-mtime +n:列出在n天之前(不含n天本身)被更改过内容的文档名;
-mtime -n:列出在n天之内(含n天本身)被更改过内容的文档名;
另外需要区别以下内容:
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
如果我想要找出『4天内被更动过的文件档名』,那可以使用『find /var -mtime -4 』。那如果是『4天前的那一天』就用『find /var -mtime 4 』
图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。
- +4代表大于等于5天前的档名: find /var -mtime +4
- -4代表小于等于4天内的文件档名:find /var -mtime -4
- 4则是代表4-5那一天的文件档名: find /var -mtime 4
范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,也就是24小时之内。
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!
范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!
#find -newer apache-maven-2.2.1-bin.tar.gz ! -newer status.sh -ls【查找更改时间比文件apache-maven-2.2.1-bin.tar.gz新但比文件status.sh旧的文件】
8393137 4 drwxr-xr-x 3 root root 4096 Oct 18 15:19 .
8392815 4 -rw-r--r-- 1 root root 164 Oct 18 15:19 ./status.sh
8392814 4 -rw-r--r-- 1 root root 164 Oct 18 15:18 ./1
8196333 62300 -rwxr-xr-x 1 root root 63724381 Jun 30 17:51 ./jdk-6u5-linux-x64.bin
8393838 24388 -rw-r--r-- 1 root root 24942637 Jul 11 16:59 ./jetty-6.1.14-fgw-aps.zip
8392811 8 -rw-r--r-- 1 root root 7167 Sep 9 03:26 ./cpsapplist.prop
8393836 5788 -rw-r--r-- 1 root root 5910895 Apr 3 2011 ./jetty-distribution-7.3.0.v20110203.zip
8196335 47744 -rw-r--r-- 1 root root 48835553 Jun 30 17:51 ./moni2.tar.gz
8422513 6760 -rw-r--r-- 1 root root 6908320 Jun 30 17:51 ./apache-tomcat-6.0.30.zip
8393141 4 drwxr-xr-x 2 root root 4096 Jul 5 10:45 ./apache-tomcat-6.0.30