下面给出find命令的主要应用示例:
[root@xieqichao ~]# ls -l #列出当前目录下所包含的测试文件
-rw-r–r--. 1 root root 48217 Nov 12 00:57 install.log
-rw-r–r--. 1 root root 37 Nov 12 00:56 testfile.dat
-rw-r–r--. 1 root root 10530 Nov 11 23:08 test.tar.bz2
-rw-r–r--. 1 root root 183 Nov 11 08:02 users
-rw-r–r--. 1 root root 279 Nov 11 08:45 users2
1. 按文件名查找:
-name: 查找时文件名大小写敏感。
-iname: 查找时文件名大小写不敏感。
#该命令为find命令中最为常用的命令,即从当前目录中查找扩展名为.log的文件。
需要说明的是,缺省情况下,find会从指定的目录搜索,并递归的搜索其子目录。
[root@xieqichao ~]# find . -name "*.log"
./install.log
[root@xieqichao ~]# find . -iname U* #如果执行find . -name U*将不会找到匹配的文件
users users2
2. 按文件时间属性查找:
-atime -n[+n]: 找出文件访问时间在n日之内[之外]的文件。
-ctime -n[+n]: 找出文件更改时间在n日之内[之外]的文件。
-mtime -n[+n]: 找出修改数据时间在n日之内[之外]的文件。
-amin -n[+n]: 找出文件访问时间在n分钟之内[之外]的文件。
-cmin -n[+n]: 找出文件更改时间在n分钟之内[之外]的文件。
-mmin -n[+n]: 找出修改数据时间在n分钟之内[之外]的文件。
[root@xieqichao ~]# find -ctime -2 #找出距此时2天之内创建的文件
.
./users2
./install.log
./testfile.dat
./users
./test.tar.bz2
[root@xieqichao ~]# find -ctime +2 #找出距此时2天之前创建的文件
没有找到 #因为当前目录下所有文件都是2天之内创建的
[root@xieqichao ~]# touch install.log #手工更新install.log的最后访问时间,以便下面的find命令可以找出该文件
[root@xieqichao ~]# find . -cmin -3 #找出修改状态时间在3分钟之内的文件。
install.log
3. 基于找到的文件执行指定的操作:
-exec: 对匹配的文件执行该参数所给出的shell命令。
相应命令的形式为'command' {
} \;,注意{
}和\;
之间的空格,同时两个{
}之间没有空格
-ok: 其主要功能和语法格式与-exec完全相同
,唯一的差别是在于该选项更加安全,因为它会在每次执行shell命令之前均予以提示,
只有在回答为y的时候,其后的shell命令才会被继续执行。需要说明的是,
该选项不适用于自动化脚本,因为该提供可能会挂起整个自动化流程。
#找出距此时2天之内创建的文件,同时基于find的结果,应用-exec之后的命令,
即ls -l,从而可以直接显示出find找到文件的明显列表。
[root@xieqichao ~]# find . -ctime -2 -exec ls -l {
} \;
-rw-r--r--. 1 root root 279 Nov 11 08:45 ./users2
-rw-r--r--. 1 root root 48217 Nov 12 00:57 ./install.log
-rw-r--r--. 1 root root 37 Nov 12 00:56 ./testfile.dat
-rw-r--r--. 1 root root 183 Nov 11 08:02 ./users
-rw-r--r--. 1 root root 10530 Nov