Find命令的一般形式为:
- find pathname -options [-print -exec -ok]
pathname:find命令所查找的目录路径。
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令,在这之后的命令的形式为’coomand’ {} \;,这里要注意{}+空格+\;
-ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
一,name选项
该选项用于根据文件名来查找。
在查找过程中需要用引号将文件名模式引起来,也就是说在文件名的部分是可以用模式串来匹配的,如
在当前目录下,查找文件名以一个大写字母开头的文件,可以用如下命令查找:
- find ./ -name “[A-Z]*” -print
二,perm选项
该选项按照文件权限模式来查找文件,使用-perm选项。
如在当前目录下查找文件权限为644的文件,可以用:
- find ./ -perm 644 -print
三,nouser和user选项
这两个选项用于按照文件属主查找文件,在命令中可以给出相应的用户名。例如在当前目录下查找属于xinyu的文件。
- find ./ -user xinyu -print
- find ./ -nouser -print
四,mtime选项
这个选项是按照文件的更改时间来查找文件,在我们做一些数据备份的时候,可能经常要删除几天以前的备份,只留下最近几天的备份,这时这个选项就有用了,或者说我们想删除好些个月以前的文件。这个选项可以用于查找N天以前的文件,或者是N天以内的文件,用+号和-号,这两个符号来限定,不用说就知道-号表示多少天以内,+号表示多少天以前了。
- find ./ -mtime -6 -print 6天以内的文件
- find ./ -mtime +6 print 6天以前的文件
有时我们并不想指定确定的多少天以前或者多少天以内,我们想查找哪些文件比某个指定的文件更新,或者哪些文件比某个指定的文件更旧。比如我们想查找比”mod_hash.c”更新的文件。
- find ./ -newer mod_hash.c -print
六,type选项
在Linux系统中有很多中不同的文件类型,如:
- d:表示 目录。
- c:表示字符设备文件。
- b:表示块设备文件。
- p:表示管道文件。
- l:表示符号连接文件。
,还有s网络文件等,比如我们想在当前目录下查找所有的符号连接文件,可以用
- find ./ -type l -print
- find ./ -type d -print
一看这个选项就知道,这个选项是根据文件的大小来查找文件的。但要注意的是,这个选项可以根据块或者是字节来查找文件,一个块是按512字节来算的,默认是以块为单位的,如果要按字节查找,只要在后面加c就可以,如
- find ./ -size +10 -print 当前目录下查找文件长度超过10个块的文件。
- fiind ./ -size 1024c -print 当前目录下查找文件的长度为1024字节的文件
八,prune选项
在介绍这个选项之前,先要熟悉另外两个选项的用法-path,-a或者是-o,在不用prune选项时,path选项可以指定在路径下的哪个目录下查找。如:
- find ./ -path ‘apache’ -name *.conf
-o表示or的意思,就是会对其左边的命令返回进行求真,如果是匹配,就会进行后面的命令选项运算。如-path ./apache -prune -o -print ,表示如果左边匹配的不是./apache目录,就会调用-print进行输出。-a是表示and的意思,下面区别他们的意思:
- find . -path ./apache -prune -o -print 显示除./apache目录之外的所有文件
- find . -path ./apache -prune -a -print 只显示当前目录下的./apache目录
该选项用于在查找过程忽略某个目录,这个选项的使用比之前的选项都要讲究一些。这个选项就像一个判断我们的一样,后面接-o表示选择,如果查找的目录是被忽略的,就不会输出。
在使用prune选项的时候,用-path 以指定要忽略的路径,另外要注意以下几个问题:
- -path指定路径,如要忽略当前目录下的apache目录:-path ./apache -prune -o -print ,-o可以表示一个选择前面的是否匹配。
- 用-path时,不能用 ./apache/ ,而是./apache。
该选项用于控制find的行为,增加这个选项之后,find命令会先匹配所有的文件,然后再进入子目录中查找。
十,mount选项
该选项表示find命令只在当前的文件系统中查找文件,不进入其他文件系统,我们知道在Linux系统中,可以将一个文件系统挂载到当前文件一个目录接点上。
十一,exec和ok选项
这两个选项可以在find命令匹配到一些文件之后,对其匹配的文件进行某些操作,这时可以使用-exec选项,比如我们想用ls -l命令列出所匹配到的文件:
- find ./ -type l -exec ls -l {} \;
- find ./logs -type f -mtime +7 -exec rm {} \;
在实际应用过程中,exec选项还是用的比较多的,再次提示注意{}和\;之间的空格。