find命令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了find命令详解相关的知识,希望对你有一定的参考价值。

find命令

  find作为一个文件查找命令,与locate不同的是,它是一个实时查找命令,而locate则依赖于事先建好的数据库。而数据库的建立又十分耗费系统资源;locate命令虽然在查找速度上优于find,但在工作应用时有可能不能查到短时间内新建或者改变的文件,故个人认为二者各有优劣,使用时依照情况的不同自己斟酌使用。

  本文中部分为马哥Linux视频中的课程笔记,且虽然标题是find命令详解,但由于本人也处于初学阶段,知之尚浅,故不能保证所写文章能够详细叙述此命令精髓,望诸位前辈能够指出错误及不足。



   find命令的工作模式

    find命令是一个实时查找工具,它是通过遍历指定起始路径下的文件系统层级结构完成查找的;

    

    例如,我们直接在当前用户目录下使用如下图(命令效果效果因人而异)

    技术分享

     

     上图是本人的root目录的部分文件,可以看到find命令将当前路径下的所有文件路径全部了显示出来。


   find命令的用法

     find [选项] [查找起始路径] [查找条件] [处理动作]

       从刚刚的例子可以看出,find后的这四种元素都可省略

       

        查找起始路径:指定具体的搜索目标文件的起始路径,如不指定,则默认指定命令执行时用户所在的路径为起始路径。

      

      查找条件:指定查找的目标文件的限定条件,限定条件可以指定为文件名、文件大小、文件类型、文件的从属关系、文件的权限等,如不指定,则为指定的查找起始路径下的所有文件。


      处理动作:对符合查找条件的文件做出相应的操作,例如,删除操作。默认输出至标准输出。



    find命令查找条件详述

       按照文件名查找

        -name "pattern":pattern为要查找的文件名

        -iname "pattern":与-name用法一样,只不过忽略大小写

            上述两个命令支持glob风格的通配符,例如:

                *,?,[],[^]

        -regex pattern:基于正则表达式模式查找文件,匹配的是整个路径,而非基名;


       按照文件从属关系查找

        -user USERNAME:-user后指定用户名,查找属主为所键入的用户名的所有文件

        -group GROUP:-group后为指定用户组,查找属组为所键入的用户组的所有文件

        -uid UID:-uid后为指定的UID,查找属主为所键入的UID的所有文件

        -gid GID:-gid后为指定的GID,查找属组为所键入的GID的所有文件

        -nouser:顾名思义,此选项查找没有属主的文件

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

       

       按照文件类型查找

        -type TYPE:

           TYPE具体类型:

            f:普通文件

            d:目录文件

            l:符号链接文件

            b:块设备文件

            c:字符设备文件

            p:管道文件

            s:套接字文件

     匹配条件时也可以使用逻辑运算进行更加复杂一些的匹配

        -a,默认组合逻辑;

         -o or

        -not,!


       按照时间戳查找

        以“天”为单位

          -atime: [+|-]#,#为天数;

          -mtime

          -ctime

             选项后直接跟天数#表示具体某一天,例如 -atime 7:含义为7天前的那一天被访问过的文件。


            选项后跟+#表示在#天之前(不包含第#天)的所有时间,例如 -mtime +7:含义为在过去的7天之前(不包含第7天)被修改过的文件。


            选项后跟-#表示在过去#天之内,例如:-ctime -7:含义为过去的7天之前改变文件状态的文件。

        以“分钟”为单位:

          -amin

          -mmin

          -cmin

       因使用方法与以“天”为单位的使用方法相似,在此不进行赘述。

      

      按照权限查找:

        -perm [/|-]mode

         mode精确权限匹配

         /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;文件的9位权限存在“或”关系;

            例如:-perm /222:当前目录的所有文件中,文件的三段权限中至少有一段权限有写权限;

          -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件既满足;文件的9位权限存在“与”关系;

            例如:-perm -111:当前目录的所有文件中,文件的三段权限都要有执行权限;

   

        


                            

                            未完待续





        

       

    


    

    

本文出自 “12344616” 博客,请务必保留此出处http://12354616.blog.51cto.com/12344616/1968381

以上是关于find命令详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令详解 find

linux中find命令的使用详解

find : find命令详解

find命令详解

Linux下find命令详解

find 命令详解