感谢支持
我们一直在努力

Linux中find命令使用

Find命令的一般形式为:


  1. find pathname -options [-print -exec -ok]  
参数说明如下:


pathname:find命令所查找的目录路径。


-print:find命令将匹配的文件输出到标准输出。


-exec:find命令对匹配的文件执行该参数所给出的shell命令,在这之后的命令的形式为’coomand’ {} \;,这里要注意{}+空格+\;


-ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


一,name选项


该选项用于根据文件名来查找。


在查找过程中需要用引号将文件名模式引起来,也就是说在文件名的部分是可以用模式串来匹配的,如


在当前目录下,查找文件名以一个大写字母开头的文件,可以用如下命令查找:


  1. find ./ -name “[A-Z]*” -print  


二,perm选项


该选项按照文件权限模式来查找文件,使用-perm选项。


如在当前目录下查找文件权限为644的文件,可以用:


  1. find ./ -perm 644 -print  

三,nouser和user选项


这两个选项用于按照文件属主查找文件,在命令中可以给出相应的用户名。例如在当前目录下查找属于xinyu的文件。


  1. find ./ -user xinyu -print  
为了查找那些账户已经被删除的用户的文件,可以用-nouser选项,这个选项不用用户名参数,如


  1. find ./ -nouser -print  
与这两个选项相对应的另外两个用于组属主查找的选项是:group和nogroup,其用法和user,nouser一样。


四,mtime选项


这个选项是按照文件的更改时间来查找文件,在我们做一些数据备份的时候,可能经常要删除几天以前的备份,只留下最近几天的备份,这时这个选项就有用了,或者说我们想删除好些个月以前的文件。这个选项可以用于查找N天以前的文件,或者是N天以内的文件,用+号和-号,这两个符号来限定,不用说就知道-号表示多少天以内,+号表示多少天以前了。


  1. find ./ -mtime -6 -print 6天以内的文件  
  2. find ./ -mtime +6 print 6天以前的文件  
五,newer选项


有时我们并不想指定确定的多少天以前或者多少天以内,我们想查找哪些文件比某个指定的文件更新,或者哪些文件比某个指定的文件更旧。比如我们想查找比”mod_hash.c”更新的文件。


  1. find ./ -newer mod_hash.c -print  
可以用 ! -newer表示不比某个文件更新。

六,type选项


在Linux系统中有很多中不同的文件类型,如:




  1. d:表示 目录。
  2. c:表示字符设备文件。
  3. b:表示块设备文件。
  4. p:表示管道文件。
  5. l:表示符号连接文件。

,还有s网络文件等,比如我们想在当前目录下查找所有的符号连接文件,可以用


  1. find ./ -type l -print  
想找所有的目录文件


  1. find ./ -type d -print  
七,size选项
一看这个选项就知道,这个选项是根据文件的大小来查找文件的。但要注意的是,这个选项可以根据块或者是字节来查找文件,一个块是按512字节来算的,默认是以块为单位的,如果要按字节查找,只要在后面加c就可以,如


  1. find ./ -size +10 -print  当前目录下查找文件长度超过10个块的文件。  
  2. fiind ./ -size 1024c -print 当前目录下查找文件的长度为1024字节的文件  

八,prune选项
在介绍这个选项之前,先要熟悉另外两个选项的用法-path,-a或者是-o,在不用prune选项时,path选项可以指定在路径下的哪个目录下查找。如:


  1. find ./ -path ‘apache’ -name *.conf  
表示在当前目录下的apache目录里查找后缀为conf的配置文件。
-o表示or的意思,就是会对其左边的命令返回进行求真,如果是匹配,就会进行后面的命令选项运算。如-path ./apache -prune -o -print ,表示如果左边匹配的不是./apache目录,就会调用-print进行输出。-a是表示and的意思,下面区别他们的意思:


  1. find . -path ./apache -prune -o -print   显示除./apache目录之外的所有文件  
  2. find . -path ./apache -prune -a -print    只显示当前目录下的./apache目录  

该选项用于在查找过程忽略某个目录,这个选项的使用比之前的选项都要讲究一些。这个选项就像一个判断我们的一样,后面接-o表示选择,如果查找的目录是被忽略的,就不会输出。
在使用prune选项的时候,用-path 以指定要忽略的路径,另外要注意以下几个问题:


  1. -path指定路径,如要忽略当前目录下的apache目录:-path ./apache -prune -o -print ,-o可以表示一个选择前面的是否匹配。
  2. 用-path时,不能用 ./apache/ ,而是./apache。
九,depth选项
该选项用于控制find的行为,增加这个选项之后,find命令会先匹配所有的文件,然后再进入子目录中查找。


十,mount选项
该选项表示find命令只在当前的文件系统中查找文件,不进入其他文件系统,我们知道在Linux系统中,可以将一个文件系统挂载到当前文件一个目录接点上。


十一,exec和ok选项
这两个选项可以在find命令匹配到一些文件之后,对其匹配的文件进行某些操作,这时可以使用-exec选项,比如我们想用ls -l命令列出所匹配到的文件:


  1. find ./ -type l -exec ls -l {} \;  
注意这个exec选项后面的格式,再如我们删除一个星期以前的日志文件。


  1. find ./logs -type f -mtime +7 -exec rm {} \;  
ok选项和exec选项的作用是一样,可以认为是exec的安全模式,如果用ok选项,那么在操作之前都会给用户一个提示:是否需要这样做。
在实际应用过程中,exec选项还是用的比较多的,再次提示注意{}和\;之间的空格。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux中find命令使用
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏