find文件命令查找详解

find命令详解

目前创新互联已为超过千家的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、保亭黎族网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

    大家或多或少使用过windows的文件查找,针对整个文件系统、部分分区,以文件名、时间等条件来进行文件查找。在Linux中主要通过locate和find这两个命令,来完成对文件查找。

    首先,简单讲一下locate和find这两个命令的适应场景和各自特点。locate和find在Linux中都可以实现基于文件系统查找符合条件的文件,却有各自的特点和使用场景。locate命令在文件系统上实现文件查找,是基于事先构建好的搜索数据库来完成的。locate命令通过搜索数据库,而不是每次查找都遍历指定的文件系统,因此,可以快速的检索查找统计出符合条件的文件。

    locate命令搜索查找的是数据库,数据库中有的文件,可以快速的查找,数据库中还未更新的,则无法查找到,因此通过locate命令查找文件,是非实时的查找,最近创建的文件还未在数据库中建立相关的索引等信息,无法查找到。

    locate有两种更新搜索数据库的方法:

      1、系统制定的计划任务,搜索遍历整个根文件系统,来自动完成数据库的更新

      2、updatedb命令,手动更新数据库

    因此,locate命令适用于非实时的、模糊的、快速查找

    locate命令基本用法:

      locate [option]...[pattern]...

    常用选项:

      -h 帮助信息

      -i 忽略大小写

      -c 统计共有多少符合条件的文件 

      -b 只显示匹配路径中的基名

      -r 支持使用正则表达式来匹配pattern

    一般,在Linux中locate命令查找文件,使用较少,多使用find命令,实现实时精确的文件查找。

    find命令详解

      find查找命令,是通过遍历指定的文件系统,匹配查找模式来完成查找,是实时的、精确查找。

    find命令的基本用法:

      find [option]...[查找文件路径] [查找条件] [查找后的处理动作]

        常用选项:一般使用较少

        查找文件路径:查找文件的起始路径,默认是当前工作目录

        查找条件:指定的查找标准,可以是文件名、文件的大小、文件的类型、权限、从属关系、时间戳等标准来查找,默认为查找指定路径下的所有文件。

        处理动作:对符合条件的文件作出操作,默认为标准输出。

        备注:find查找文件,默认是glob文件名通配,而非正则表达元字符通配


    查找条件:

      -name "pattern" 根据文件名来查找文件 

      -iname "pattern" 根据文件名查找文件,忽略大小写

        实例:

          #find /etc -name pass*   #在/etc目录下查找文件名以pass开头的文件

          #find / -name pass*     #在根目录下查找文件名以pass开头的文件

          

find文件命令查找详解

find文件命令查找详解

      -regex "pattern" 根据正则表达式匹配查找

        在find中使用较少,正则表达式工作在贪婪模式下,匹配的是整个路径而非基名

      -user username 查找属主为指定用户的文件

find文件命令查找详解

 

      -group groupname 查找属组为指定组的文件

find文件命令查找详解

      -uid UID 查找属主为指定UID的文件

find文件命令查找详解

      -gid GID 查找属组为指定GID的文件

find文件命令查找详解

      -nouser 查找没有属主的文件

      -nogroup 查找没有属组的文件

find文件命令查找详解

find文件命令查找详解

      组合测试:

        与:-a 默认组合逻辑

        或:-o 

        非:-not或!

        备注:组合测试时如用括号需转义 \(  \)


      -type TYPE 根据文件类型查找

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

find文件命令查找详解

find文件命令查找详解

      -size [+|-]#单位  根据文件大小来查找

        常用单位:k M G

        备注:-size 3M:查找出来的文件是满足小于4M大于2M的范围的文件

            -size +3M:查找的是4M及大于4M的文件

            -size -3M:查找的是2M及小于2M的文件

find文件命令查找详解

find文件命令查找详解

      根据时间戳查找

        以天为单位

        -atime [+|-]#

        -mtime [+|-]# 

        -ctime [+|-]#

        以分为单位

        -amin [+|-]#

        -mmin [+|-]# 

        -cmin [+|-]#

      实例:#find /etc -mtime -7  #查找7天内修改过的文件

find文件命令查找详解

      根据权限查找

        -perm [/|-]mode 

      备注:-perm mode:精确匹配权限位

          -perm /mode:任意一类用户(u,g,o)的任何权限位,任何一个符合条件即满足(9个权限位只要有一个满足即可,是或的逻辑关系)

          -perm -mode:每一类用户(u,g,o)的权限位(r,w,x)的每一位,同时符合条件即满足(9个权限位之间是与的逻辑关系)

      实例:#find /etc -not -perm /222 -type f  #查找所有用户都没有写权限的文件

find文件命令查找详解

    处理动作:

      -print   输出至标准输出,默认动作

      -ls     类似于对查找到的文件执行"ls -l"命令,输出文件的详细信息

      -delete  删除查找到的文件

      -fls /path/to/file 把查找到的所有文件的长格式信息保存至指定的文件中

      -ok command {} \; 对查找到的每个文件都交给command来执行,每个文件执行都要用户确认

      -exec command {} \; 对查找到的每个文件都交给command来执行,不需要用户确认

        备注:find查找到的文件路径传给后面的command,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令,但是有些command不能接受过长的参数,此时command执行会失败。另有一种方式可以规避此问题:#find ... | xargs command

find文件命令查找详解

      


本文名称:find文件命令查找详解
本文网址:http://azwzsj.com/article/jgjspo.html