Linux Find 命令的详解与研究

Find命令用来在指定目录下查找文件。Linux下类似的查找命令还有 which、locate、whereis。

区别:

  which        查找命令字所在的位置        eg.  which   ls

  locate       模糊匹配(只要是包含关键字的文件都能查找出来),不是实时的,基于数据库查找, updatedb 升级 locate的数据库,不升级的话,一些新文件可能找不到
               由于基于数据库查找,所以速度特别快

  whereis  只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息

  find        实时查找、精确查找、 遍历整个指定目录中的文件,速度很慢、支持多种查找条件(属主,属组,权限,文件名等)

 

语法: 

     find  [ find_path ]  [ 条件 ]  [ 处理动作 ] ,中括号表示该选项可以不指定,有缺省值

     find_path : 如果不写,默认在当前工作目录查找

     条件:如果不写,会查找该路径下所有的文件

     处理动作:默认打印到屏幕上  print

 

下面先介绍条件(匹配标准):

-name  file_name :  根据文件名进行查找,区分大小写
-iname  file_name : 根据文件名进行查找,不区分大小写
-regex  PATTERN   根据正则表达式的模式进行查找        //不常用
-user                       通过属主进行查找
-group                    通过属组进行查找
-uid  UID                通过UID进行查找     //  适用于 用户删除了,或者属主是数字的情况
-gid   GID              通过GID进行查找     // 用户删除了,下一个新建的用户默认继承删除用户的文件的拥有权
-nouser                 查找属主不是某用户的文件     查找没有属主的文件   // 比如删除了用户,文件的属主变成数字

-nogroup              查找没有属组的文件

-type       根据文件类型进行查找,下面是Linux下各种文件类型

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

-size   根据文件大小进行查找      [ + | - ]     k  m  g      // k = kb, m=mb,g=gb,都是存储大小的单位
        -size   5k  精确匹配大小为5k的文件
        +         大于
        -          小于

根据时间戳进行查找  [ + | - ]
          -mtime  时间单位为天               // stat  file_name    查看文件的时间戳
          -atime: 时间单位为天
          -ctime: 时间单位为天
          -mmin: 时间单位为分钟
          -amin: 时间单位为分钟
          -cmin: 时间单位为分钟

-perm    根据权限查找
       -perm  MODE
                   MODE: 644 ,精确匹配   三位都要匹配
                  /MODE:任意一位匹配即可              //  不是精确匹配,是文件权限的某一位包含MODE里面的任意一位即可
                  -MODE: 文件权限能够完全包含此MODE时才能匹配   eg.  -644     则   644  744  655 都能匹配
条件组合:
  -a  同时满足多个条件 eg.   find  /tmp  -user  username   -a  -perm  644        // 相当于and
  -o   满足一个条件即可                                             //  相当于 or
  -not    不满足条件的被查找出来

查找条件通配符
     *  通配任意个数的任意字符
     ?  通配单个的任意字符            //  与扩展正则里面的含义不一样



然后介绍的是处理动作 :                                                                                                  

-print :  默认动作,查找结果打印到屏幕
-ls       以类似于  ls  -l   的形式显示结果的信息
-ok  COMMAND  {}  \;        执行动作时提示用户是否执行 , {}代表文件名占位符
-exec  COMMAND  {}  \;     执行动作时不提示用户,直接执行

 

最后,这些并不是find的全部参数,但掌握上述的各种参数的用法也能满足日常使用了

如果想深入了解,建议多用用 man  find 来 查看 官方帮助文档。

有兴趣的小伙伴可以在下方留下你们的评论,我会经常查看评论并回复的!!!

  

 


    
     

 

posted @ 2018-10-04 21:57  南极的蜗牛  阅读(932)  评论(0)    收藏  举报