文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

find文件命令查找详解

2024-04-02 19:55

关注

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

      


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯