find文件命令查找详解
admin
2023-05-27 01:41:07
0次

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文件命令查找详解

      


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...