#find 命令 2020/1/4

find

文件查找:在文件系统上查找符合条件的文件(区别于文件过滤)

 

文件查找:

  1. locate  非实时查找(数据库查找),基于索引进行的查找
  2. find  实时查找

 

locate:

依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行的(周期性任务计划)

手动更新数据库:updatedb

索引构建过程需要遍历整个根文件系统,极其消耗资源

工作特点:

  1. 查找速度快
  2. 模糊查找
  3. 非实时查找
  4. 命令:#locate keyword

 

find:

实时查找工具,通过遍历指定路径下的文件系统完成文件查找

工作特点:

  1. 查找速度略慢
  2. 精确查找:
  3. 实时查找

语法:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

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

              查找路径:指定具体目标路径(默认当前目录)

              查找条件:可以文件名称、大小、类型、权限。。。等(默认为找出指定路径下的所有文件)

              处理动作:对符合条件的文件做什么操作。默认输出至屏幕(标准输出)

  1. 查找条件

根据文件名称查找

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

        -name “文件名称”:支持使用glob(通配符) *,?,[ ] ,[^]

        -iname “文件名称”:不区分大小写

    

-regex “pattern” :支持使用正则表达式,以pattern匹配整个文件路径字符串,而不仅仅是文件名称

根据属主、属组查找

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

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

       

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

        -uid  UserID:查找属主为指定的uid号的文件:

        -gid  GroupID:查找属组为指定的gid号的文件:

-nouser :查找没有属主的文件

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

根据文件类型查找

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

        -type TYPE:

                             f:普通文件

                             d:目录文件

                             l:符号链接文件

                             s:套接字文件

                             b:块设备文件

                             c:字符设备文件

                             p:管道类文件

组合条件查找

        与:-a

        或:-o

        非:-not,!

       

        查找没有属主或没有属组的文件,组合条件括号,括号需要转义以区别-ls

        查找/tmp下,属主不是root且名字不是fstab的文件

根据文件大小查找

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

-size  [+|-] *unit:

        常用单位:K,M,G

        *unit:(*-1,*]

        -*unit:[0,*-1]

        +*unit:(*,∞)

 

根据时间戳进行查找

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

  1. 以“天”为单位:

访问时间:-atime [+|-]数字

                     数字:【数字,数字+1)

                     +数字:【数字+1,∞)

                     -数字:【0,数字  】

改变时间:-mtime

修改事件:-ctime

  1. 以“分钟”为单位:

-amin

-mmin

-cmin

根据权限查找

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

-perm [+|-]模式(centos 7以上+被废除,以/代替)

                      模式:精确权限匹配

                     

                      +模式:任何一类对象(u,g,o)的权限中,只要能有一位匹配即可(实际权限大于等于权限标准即可)(或关系)

                      -模式:每一类对象,都必须同时拥有为其指定的权限标准(实际权限大于等于权限标准即可)(与关系)

 

  1. 处理动作

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

-print :默认的处理动作,显示至屏幕

-ls:类似于“ls -l”

-delete:删除查找到的文件

-fls +路径 :查找到的所有文件的长格式信息保存至指定文件中

-ok +命令 {} \; :对查找到的每个文件执行由“命令” 指定的命令,每次执行前系统会再次要求用户确认。

-exec +命令 {} \; :对查找到的每个文件执行由“命令” 指定的命令,每次执行前系统不会再次要求确认。

{ }  \;   固定格式,附加在命令后

{ } 用以引用查找到的文件名称自身

find查找到没有属主的文件,再修改属主为root

find查找到30分钟内修改的文件,并重命名为原文件名加.new

注意:find传递查找结果给后面的命令时,查找到的所有符合条件的结果一次性传递给后面的命令,有些命令不能接受过长参数,此时命令执行可能会失败。

另一种方式规避此问题:

find | xargs COMMAND

 

练习:

  1. 查找/var目录下属主为root,且属组为gdm的所有文件或目录

  1. 查找/usr目录下不属于root、bin或hadoop的所有文件或目录

  1. 查找/etc下最近一周内容修改过,同时属主不为root也不是hadoop的文件或者目录

  1. 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件

  1. 查找/etc目录下大于1M,且类型为普通文件的所有文件

  1. 查找/etc下,所有用户都没有写权限的文件

  1. 查找/etc下,至少由一类用户没有执行权限的文件

  1. 查找/etc/init.d下所有用户都有执行权限,且其他用户有写权限的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值