find介绍



     find文件搜索命令,即通过不同的条件参数以达到自己所要找的目

标文件。所以说find也是一个搜索命令,说到此处有人就会说了grep也是

一个文件搜索命令,与find又有什么区别呢?有区别,而且区别大的很哦!

grep搜索文本内容的命令,即对一个文本里的所有字符查找搜索,而find

则是在某路径或是当前目录下搜索某个文件。说的这里我想大家都明白了

吧,grep和find是有着本质的区别,一个是对文件里面内容的搜索,一个

是对文件自身的搜索。



find格式用法


格式  

find [options] [路径] [条件] [处理动作]

注意:中括号都是可选项,所以也可在当前目录下直接执行find,作用是

查找当前目录下的所有文件。

options:可选参数;

路径:用户要查找的路径,默认是当前目录下;

条件:查找目标文件设置条件,默认是当前路径下的所有文件;

处理动作:对于找到的文件作何处理,默认是显示在屏幕上;


1、查找条件:


查找条件可分为:名称查找、类型查找、文件大小查找以及时间查找和权

限的查找,下面分别一一介绍:


(1)名称查找:

-name:即-name参数后跟文件名称,指定查找某一文件,需注意的是此处

      查找是此处查找支持文件名通配,且严格区分字符大小写。

如:查找/tmp下的所有以.log结尾的文件

命令总结---find_find--命令总结

-iname:用法与-name一样,只是不区分字符大小写了。

-user:后跟用户名,意思是查找以此用户为属主的文件。

-group:与-user用法一样,意思是查找包含此属组的文件。

如:在/tmp下查找以user为属组的文件

命令总结---find_find--命令总结_02

-nouser:查找所有没有属主的文件。

-nogroup:查找没有属组的文件。

-uid:查找属主为此uid的文件。

-gid:查找属组为此gid的文件。

注意:既然有-user、-group查找属主、属组的命令了,为什么还要-uid和

-gid查找属主和属组ID的命令呢?

下面举个例子说明一下:

例:先查看一下user的uid是501,然后将user用户删除掉,此时若想查找此

前删除的user用户新建的文件怎么找呢,-uid就派上用场了,如:

命令总结---find_find--命令总结_03


(2)类型查找:

类型查找顾名思义是根据文件的类型来查找,此处先列出字母所代表的都

是那类的文件类型:  

-type:

f:普通文件

d:目录文件

b:块设备,即设备文件

c:字符设备

l:符号链接文件

p:命名管道

s:套接字

如:在/tmp下查找所有普通文件,目录文件(注意:是分开查找的哦!)

命令总结---find_find--命令总结_04


(3)文件大小查找:

以文件大小为条件对目标进行查找,格式 -size [+|-]#Unit 其中-size是

指定用于文件大小查找的关键字,+是大于,-是小于,#表示数值,Unit是

单位一般有K、M、G

如:查找/etc下所有大于1M的文件

命令总结---find_find--命令总结_05


(4)时间查找:

文件分为三个时间,即访问时间、修改时间和改变时间,这也就是文件的时

间戳:时间查找分为一天为单位和以分钟为单位

以天为单位:-atime [+|-]#、-mtime [+|-]#、-ctime [+|-]#

#:表示数值,意思是几天。

+:表示在#之前的时间。

-: 表示在#之内的时间。

若不加+、-号则表示在#天之内的时间。

以分钟为单位:-amin [+|-]#、-mmin [+|-]#、-cmin [+|-]#

用法与以天为单位的一样,所以在此就不多说了。

如:查找/tmp下一天之内的被访问过的文件和两天之前被访问过的文件:

命令总结---find_find--命令总结_06


(5)权限查找:

依据文件的属主、属组和其他三类的权限大小来查找目标文件格式: -perm[+|-]MODE

-perm:表示权限查找的关键字。

MODE:表示权限,一般用数字表示,不加+、-号时表示精确查找。

+MODE:表示属主、属组和其他,三类用户的任何一类用户的匹配读(r)、

      写(w)、执行(x)三个权限的任何一个权限即可,通常用来查找

      某类用户的某特定权限是否存在。

-MODE:表示每类用户指定权限位都匹配,才可满足查找条件。

如:查找/tmp下所有具有执行权限的文件:

找出/tmp下属主具有执行权限,属组具有写权限,其他用户具有读现象

命令总结---find_find--命令总结_07

例:找出/tmp下属主具有执行权限,属组具有写权限,其他用户具有读权限的文件:

命令总结---find_find--命令总结_08


(6)组合条件:

可以把多个条件以或、且、非的形式组合到一起:

-a:且,同时满足两边条件,默认可以不用写。

-o:或,两个满足其中一个条件。

-not或! :表示取反,即显示所有不满足条件的文件。

如:在/usr下找出以root为属主并且大于20M的文件:

命令总结---find_find--命令总结_09



2、处理动作


处理动作就是,将find的查找到的结果作何处理,此选项默认是将结果输

出到屏幕,对于大多数人此项一般不用,但有时也会将查找到的结果做另

外的处理,所以就用到以下介绍的选项了:

-print:打印在标准输出上。

ls:以长格式输出文件信息。

-exec  {} \; :对查找到的文件执行指定的命令的操作,把查 找到的

               所有文件一次性的传递给-exec所指定的命令。                        

-ok  {} \; :和-exec一样只是-ok是交互式的操作。

| xargs:管道之后的xargs是把管道前面的字符串作为后面命令的参数执行。

如:将在/home下找到的文件以长格式显示出来:

命令总结---find_find--命令总结_10




find的总结


作为一个搜索文件的命令find确实没有辜负自身的价值,在find的查找条件

中几乎都能找到你想要搜索文件的条件。不过对于find来讲学好条件查找是

至关重要的,当然在这几个条件中也有常用,不常用之分。一般对于文件类

型的查找和文件名称的查找很常用,但文件大小的查找、权限和时间的查找

也不可忽视。总结而言学好find对于以后的linux学习会有很大的帮助哦!