码迷,mamicode.com
首页 > 其他好文 > 详细

find、locate文件查找命令详解

时间:2015-12-18 22:52:31      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:find   locate   

 一、locate:根据键值数据库模糊匹配,找路径

    1.命令工作模式

        (1)模糊查找

  依赖于事先构建好的索引库,索引构建过程需要遍历整个根文件系统,占CPU使用资源

        (2)无法实施更新

  查找的是过去某一时刻更新的数据库文件,查找路径

               系统自动更新:一般为每日系统例行性任务完成更新

               手动更新数据库:uodatedb

        (3)查找速度快

  通过对创建的索引库的匹配遍历查找文件路径,查询速度哦哒哒增加

    2.格式:locate   [OPTION]...  PATTERN

-b:只匹配路径中的基名

-c:统计出共有多少个符合条件的文件数量

-r:基于基本正则表达式进行匹配操作

 

 

 

 二、find:实时遍历文件系统查找文件

    1.工作特性:实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找

            查找速度略慢精确查找实时查找

    2.使用格式:find  [OPTION]  [查找起始路径]  [查找条件]  [处理动作]

        (1)找起始路径:指定具体搜索目标起始路径;默认为当前目录;

        (2) 查找条件:指定的查找标准,可以是选项或者测试是条件

   测试条件(查找标准):根据文件名、大小、类型、从属关系、权限等等标准进行

                                               结果通常为布尔型("true", "false")

    1)根据文件名查找:

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

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

                        注意:默认仅支持glob风格的通配符;*, ?, [], [^]

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

     2)根据文件从属关系查找:

  -user USERNAME:查找属主指定用户的所有文件;

  -group GRPNAME:查找属组指定组的所有 文件;

  -uid UID:查找属主指定的UID的所有文件;

  -gid GID:查找属组指定的GID的所有文件;

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

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

     3)根据文件的类型查找:-type TYPE:

     4)根据文件的大小查找:

             -size [+|-]#UNIT        常用单位:k, M, G

       #UNIT:(#-1, #],表示#-1(一个单位数量变化)范围内的文件

      -#UNIT:[0,#-1],小于

      +#UNIT:(#, oo),大于

     5)根据时间戳查找:

   以“天”为单位:-atime|-mtime|-ctime [+|-]#

       #:[#, #-1)

     -#:(#, 0]

     +#:(oo, #-1]

    以“分钟”为单位:-atime|-mtime|-ctime [+|-]#

     6)根据权限查找:

          -perm  [/|-]mode

                  mode:精确权限匹配;

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

    -mode""关系;每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;

             注意:三位数字表示就为权限之间的逻辑关系

       7)组合测试:将多个条件按逻辑顺序组合起来使用

     与:-a, 默认组合逻辑;

     或:-o

     非:-not, !

        (3)处理动作:对符合查找条件的文件做出的操作;默认为输出至标准输出;

 -print:输出至标准输出;默认;

-ls:输出文件的详细信息;

-delete:删除查找到的文件;

-fls /PATH/TO/SOMEFILE:保存查找到所有文件的长格式信息至指定文件中;

-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND命令;每次操作都由用户进行确认;

-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND命令;无需每次用确认

     注意:find查找出所有符合条件的文件路径,并一次性传递给后面的命令;

        find | xargs COMMAND:解决有些命令接受过长参数执行会失败问题

 

 

 

三、对于find查找时在权限方面的理解总结

总结:

    1.三个数字代表,每个数字代表的是一类用户的三个权限,共九个权限位

    2.find的测试条件是一种查找条件的表达式,其匹配显示的结果为状态为真的结果,即符合条件的为真,否则为假。

    3.三位数字表示的九位权限之间是有逻辑关系的。

-perm    mode:所写的权限要全部满足条件

-perm   /mode:三位数值所表现的九位关系是或者

       8bitys二进制角度来解析满足其中一组状态即可

用现在的权限对位减去mode,必须有一个不为负数

-perm   -mode:三位数值所表现的九位关系是与的,也就是说同时权限至少三个都要满足

用现在的权限对位减去mode,任何一个不能出现负数


本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1726198

find、locate文件查找命令详解

标签:find   locate   

原文地址:http://xuding.blog.51cto.com/4890434/1726198

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!