find—在目录结构中搜索文件&执行制定操作

find在目录结构中搜索文件&执行制定操作。

名称

find

语法

find [-options] path

选项

-type:查找某一类型文件
b:块设备文件
d:目录
c:字符设备文件
P:管道文件
l:符号链接文件
f:普通文件
-exec  command              —–将查到的文件执行command操作
-name  filename             #查找名为filename的文件
-perm                       #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime  -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查GIN: 0px">
-perm                       #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime  -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime   -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer  f1 !f2              找文件,-n指n天以内,+n指n天以前 
-ctime   -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer  f1 !f2              #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                %;     #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                       #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                      #忽略某个目录

使用实例

name选项的使用
在当前目录及子目录中查找所有的‘ *.log‘文件

find . -name "*.log" -print  

当前目录及子目录中查找文件名以一个大写字母开头的文件

find . -name "[A-Z]*" -print  

/etc目录中查找文件名以host开头的文件

find /etc -name "host*" -print  

查找$HOME目录中的文件

find ~ -name "*" -print 或find . -print  

从根目录开始查找所有的文件

find / -name "*" -print  

如果想在当前目录查找文件名以一个个小写字母开头,最后是4到9加上.log结束的文件:

find . -name "[a-z]*[4-9].log" -print

 

perm选项的使用

在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件

find . -perm 755 -print

在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-005相当于555

find . -perm -005

prune忽略某个目录

在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。

在test目录下查找文件,但不希望在test/test3目录下查找

find test -path "test/test3" -prune -o -print

避开多个文件夹:

find test \( -path test/test4 -o -path test/test3 \) -prune -o -print 

圆括号表示表达式的结合。 \ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

查找某一确定文件,-name等选项加在-o 之后

find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

使用user和nouser选项

在$HOME目录中查找文件属主为peida的文件

find ~ -user peida -print 

在/etc目录下查找文件属主为peida的文件

find /etc -user peida -print  

为了查找属主帐户已经被删除的文件,可以使用-nouser选项。在/home目录下查找所有的这类文件

find /home -nouser -print

使用group和nogroup选项

在/apps目录下查找属于gem用户组的文件

find /apps -group gem -print  

从文件系统的根目录处查找没有有效用户组的文件

find / -nogroup-print

按照更改时间或访问时间等查找文件

希望在系统根目录下查找更改时间在5日以内的文件

find / -mtime -5 -print

为了在/var/adm目录下查找更改时间在3日以前的文件

find /var/adm -mtime +3 -print

查找比某个文件新或旧的文件
查找更改时间比文件log2012.log新但比文件log2017.log旧的文件

find -newer log2012.log ! -newer log2017.log

查找更改时间在比log2012.log文件新的文件

find . -newer log2012.log -print

使用type选项

在/etc目录下查找所有的目录

find /etc -type d -print  

在当前目录下查找除目录以外的所有类型的文件

find . ! -type d -print  

在/etc目录下查找所有的符号链接文件

find /etc -type l -print

使用size选项:
在当前目录下查找文件长度大于1 M字节的文件

find . -size +1000000c -print

在/home/apache目录下查找文件长度恰好为100字节的文件

find /home/apache -size 100c -print  

使用depth选项

find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件

find / -name "CON.FILE" -depth -print

使用mount选项
从当前目录开始查找位于本文件系统中文件名以XC结尾的文件

find . -name "*.XC" -mount -print 
JackSun

JackSun

I'm a coder.

You may also like...

No Responses

  1. 能发这么好的文章,太谢谢了

Leave a Reply

Your email address will not be published.