find—查找条件

  

 

一、根据时间戳查找:

二、根据权限查找

三、根据文件所属人owner,文件所属组group查找

四、根据搜索层级查找

五、根据文件名查找

六、根据文件类型查找:


  

   find实时查找工具,通过遍历指定路径完成文件查找

1)工作特点:

查找速度略慢

精确查找

实时查找

可以只搜索用户具备读取和执行权限的目录

2)语法:

find [OPTION]...[查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径;默认为当前目录

查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕

本文主要针对查找条件进行详细解释



一、根据时间戳:

1、以“天”为单位

  时间戳:atime 访问时间

       mtime 文件数据修改时间

       ctime 文件元数据修改时间

2、以“分钟”为单位

         -amin 

         -mmin

        -cmin

3、参数

   ( 代表大于  

         )代表小于

     [代表大于等于;

     ]代表小于等于 ;  例如(03],表示大于0,小于等于3

   #:[#,#+1)

+#: [#+ 1,]

 -#: [0,#)  

4、例子

1)查找app目录中在一天之内修改过的文件

     find /app –mtime -1

     find—查找条件_Linux

  find [OPTION]... [查找路径] [查找条件] [处理动作]

      分析:find的运用格式为find 录(不写目录则默认当前目录) 查找条件 –mtime等) 查         找-1 用法是小于一天,即[0 ,1

      注:查找条件可以用其他时间

二、根据权限查找

1、-perm   /mode:精确权限匹配

    +mode[/mode]任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+centos7开始淘       汰,所以本文直接用centos6 、7 中通用的/演示例子

 2-perm  -mode  每一类对象都必须同时拥有指定权限,与关系0表示不关注

 3、例子

  (1)找出当前目录下 user有读权限或者其他人有写权限的文件

  find—查找条件_Linux_02

  分析:不写路径的默认当前路径    4代表读权限;2代表写权限;1代表执行权限

   /代表各个位上是或关系,

   <1> user位上是4代表读权限,只要user上有读权限的都可以满足条件

   <2>其他人为写权限的文件也满足条件。

   <3>当有0时不用管这一位。

   <4>三个位置之间的关系是或关系,除去0位置上,其他任意位满足条件即可。即查找文件的条         件必须是,user位上有读权限或所有人位上有写权限,所以全部文件都满足条件。前面的点

   “ .”代表当前目录。

 (2)找出当前目录下 user有读权限且其他人有写权限的文件

find -perm -401

   find—查找条件_Linux_03

   分析:代表各个位上是或关系

   <1> user位上是4代表读权限,user上必须有读权限才可以满足条件;

      <2>其他人位上必须有写权限的文件才满足条件。

      <3>当有0时不用管这一位。

      <4>三个位置之间的关系是与关系,即查找文件的条件必须是,user位上有读权限且所有人位           上有写权限,所以只有file2file3

三、根据文件所属人(owneruser,文件所属组group查找

  1、例子

      (1)找出当前目录中所属人为root的文件

 find—查找条件_Linux_04

 分析:当在查找所属人时加上-user 后面加上所属人

      (2)找出当前目录中所属组为guan的文件

   find—查找条件_Linux_05

        分析:当在查找所属组时加上-group 后面加上所属组

四、根据搜索层级查找:

  1、当查找的目录太大,比如根目录,当只想查找根一级目录下的文件,需要下面层级限制

    -maxdepth level 最大搜索目录深度,指定目录为第1级

        -mindepth level 最小搜索目录深度

    2、例子

    (1)查找根目录一级目录权限user有读权限且其他人有写权限的文件

       find / -maxdepth 1 -perm-401

   find—查找条件_Linux_06

    (2-mindepth 对于最小搜索目录的意义不大,因为find的搜索属于贪婪模式,如果不指定最大的     搜索目录时,会自动的向下一个目录搜索。

五、根据文件名查找:

   1、-name "文件名称":支持使用glob  *, ?, [], [^]

   2、例子

     (1)搜索/etc一级目录下所有以.txt结尾的文件

          find /etc -maxdepth 1 -name "*\.txt" 

         find—查找条件_Linux_07 

        分析:在以名字搜索时,要加上-name  "*\.txt"  后面模糊匹配时要加双引号,*代表任意字      符,因为.不能被识别,所以要加\转译

      (2)搜索/目录下所有名字为a.txt的文件

           find /etc -name a.txt

          find—查找条件_Linux_08

         分析:当搜索文件名字确定时不用加双引号

六、根据文件类型查找:  1、根据文件类型查找:

      -type TYPE:
           f: 普通文件
             d: 目录文件
             l: 符号链接文件
             s:套接字文件
             b: 块设备文件
             c: 字符设备文件
             p: 管道文件

    2、例子

         (1)找出/app 目录下一级目录文件

          find /etc -maxdepth 1 -type d

       find—查找条件_Linux_09

 分析:find的查找方式查找时,当给出路径时,查找到的文件显示时绝对路径,不给路径即默认当前路径,查找到的文件显示时相对路径