Linux中对文件查找的实现是使用find命令。


Find命令类似于:whatis locate


Whatis 命令:依赖于数据库,非实时查找,结果非精确,查找速度快,模糊查找,whatis查找的数据库,是在规定时间内更新数据库,或者手动更新数据库(updatedb)。


Find 命令:实时查找,精确匹配,速度慢。


Find的使用格式为:


find  [options]  [查找位置]  [查找条件]  [处理动作]



查找路径:如果省略的话,为当前目录,也可以用 find .


查找条件:默认为查找指定路径下的所有文件


处理动作:默认为显示到桌面


查找条件:



name “文件名称”:对文件名作精确查找,支持使用 globbing(字符匹配)


例子:find / -name history


Linux中文件查找——find命令_文本搜索

iname “文件名称”:查找时不区分字符大小写



例子:查看下/tmp都有哪些文件


Linux中文件查找——find命令_文本查找 _02

                     图中可以看到有两个文件名为:text和Text的,我们试着用-iname选项去查找,

                    find /tmp -iname “text”

Linux中文件查找——find命令_文本搜索_03

                   看到了吧,不区分大小写,两个文件都被匹配到了。


user username 根据属主查找

                   例子:查找以xiezhao为属主的文件,在根(/)目录下:

                       find / -user "xiezhao"

Linux中文件查找——find命令_文本查找 _04

group groupname根据属组查找

                  例子:查找根目录下以xiezhao为属组的文件;

                       find / -group "xiezhao"

Linux中文件查找——find命令_find命令_05


uid UID 根据UID查找。

               例子:先查看任意一个用户的UID,然后用此用户的UID进行查找,但是为了方便和更清楚的                         来看到效果,我们就查看下上面的xiezhao用户的UID来看搜索到的文件是否相同。

               使用tail命令进行查看:tail -3 /etc/passwd


Linux中文件查找——find命令_文本搜索_06

                               再根据UID:502进行查找:find / -uid 502


Linux中文件查找——find命令_find命令_07


nouser :查找没有属主的文件

   

Linux中文件查找——find命令_find命令_08

       验证下:stat /home/123456

       

Linux中文件查找——find命令_find命令_09


nogroup查找没有属组的文件

Linux中文件查找——find命令_文本查找 _10


组合条件:

           a 与,或者且,表示同时满足两个或者两个以上的条件,可以省略。

                   例子:我们查找既没有属主也没有属组的文件,如图:

               

Linux中文件查找——find命令_文本查找 _11

           -o 或。

                       例子:查找属主为xiezhao的文件,或者属组为xiezhao的文件


Linux中文件查找——find命令_文本搜索_12

             -not :!,非,取反

                   例子:查找/tmp下非“t”字母结尾的文件


Linux中文件查找——find命令_文本搜索_13


             A,并且 非B:非(A或者B

        非A,或 非B :非(AB)                                                                type :根据文件类型查找。


type    d :查找目标为目录。

           

Linux中文件查找——find命令_Linux_14               下面的依此类推

         f :普通文件

        b :块设备文件

         c :字符文件

         l :链接文件

         P :管道文件

         S :套接字文件



size :根据文件大小查找


size [+|-] 单位 (M, K,G


例子:-size +2M 查找大于2MB

           

Linux中文件查找——find命令_Linux_15



     size - 2M 查找1MB以下

Linux中文件查找——find命令_Linux_16

size  2M 查找大于1M小于2M


Linux中文件查找——find命令_Linux_17



根据时间戳查找:


以天为单位(time):


atime


atime +# 表示(#+1)天之外被访问过。


Linux中文件查找——find命令_Linux_18

剩下的依此类推:

atime - # 表示 # t天 之内被访问过。

                  atime  # 表示大于等于 #天,小于#+1天被访问过。

                 mtime :用来搜索显示被修改过的文件。

                                   ctime :用来搜索显示被改变过的文件。


以分钟为单位(min用法和上面类似,就不做一一的举例。


             amin        mmin      cmin


根据权限查找:



perm [+|-] MODE


+MODE:任何一类用户任何一位权限匹配 (或)常用于查找某类用户的某特定权限是否存在。

   例子:查询下/tmp下其他用户可以有读权限的文件:

Linux中文件查找——find命令_文本查找 _19

Linux中文件查找——find命令_文本查找 _20

- MODE:每类用户的任何一位都匹配 (与)每类用户的指定要检查的权限位都匹配,至少两个             权限一起匹配。

                                       

Linux中文件查找——find命令_文本查找 _21

Linux中文件查找——find命令_Linux_22

处理动作:


默认为:-print :打印在标准输出上


Linux中文件查找——find命令_文本查找 _23

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

   

Linux中文件查找——find命令_文本查找 _24

            exec COMMAND {}\; :对查找到的文件执行指定的命令。Find把查找到的所有文件一次性的传递给 -exec 所指定的命令

Linux中文件查找——find命令_文本查找 _25

 ok  COMMAND {}\; :交互式的显示


find .... |xargs  COMMAND


          xargs一次接收一批结果。

               举例使用:

Linux中文件查找——find命令_Linux_26

以上为find命令的一些基本以及常用的选项。