文件查找:locate/find

文件查找就是在文件系统上查找符合条件的文件,工具名分别为:locate和find

locate是非实时查找或数据库查找的工具;而find则是实时查找工具。

locate

locate依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(即为周期性任务),也可以手动更新数据库(updatedb)

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

它的工作特点有:查找速度快,模糊查找和非实时查找

语法:

    locate KEYWORD

find

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


它的工作特点有:查找速度略慢,精确查找和实时查找

语法:

    find [OPTION]… [查找路径] [查找条件] [处理动作]

        查找路径:指定具体目标路径,默认为当前目录。

        查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行,默认为找出指定路径下的所有文件。

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

    查找条件是根据文件名查找

        -name "文件名称" (支持使用glob)

        -iname "文件名称" :不区分字符大小写

        -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

    根据属主、属组查找

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

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

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

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

        -nouser:查找没有属主文件

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

    根据文件类型查找

        -type TYPE

        组合条件如下

            与:-a

            或:-o

            非:-not,!

        示例:找出/tmp目录下,属组不是root,且文件名不是fstab的文件。

            find /tmp -not \( -user root -o -name 'fstab' \) -ls

    根据文件大小来查找

        -size [+|-]#UNIT

        常用的单位有:k,m,g

            #UNIT:(#-1,#)

            -#UNIT:[0,#-1]

            +#UNIT:(#,无限大)

    根据时间戳

        以 天 为单位        

            -atime [+|-]#

            -mtime

            -ctime

        以分钟为单位

            -amin

            -mmin

            -cmin

    根据权限查找

            -perm [+|-]MODE

                MODE:精确权限匹配

            +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可

            -MODE:每一类对象都必须同时拥有为其指定的权限标准

    处理动作

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

        -ls:类似于对查找到的文件执行 "ls -l" 命令

        -delete:删除查找到的文件

        -fls /path/to/somefile:查找到的所有文件的长格式信息

        -ok COMMAND {}\:对查找到的每个文件执行由COMMAND指定的命令

            对于每个文件执行命令之前,都会交互式要求用户确认

        -exec COMMAND {}\:对查找到的每个文件执行由COMMAND指定的命令

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

        find | xagrs COMMAND  这种方式可规避此问题

原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/12687

(0)
黑白子黑白子
上一篇 2016-03-12 23:12
下一篇 2016-03-13 01:55

相关推荐

  • 源码安装http

    http://xxlii.blog.51cto.com/10277731/1841570     哈哈!

    Linux干货 2016-08-24
  • Linux入门知识

    了解计算机的构造和Linux的基本知识,掌握相关的内容

    2017-09-10
  • 8-5作业

    1、取本机ip地址 ifconfig |grep -E -o  '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 2、取各分区利…

    Linux干货 2016-08-08
  • Bash的I/O重定向及管道

    每周更新的博客定时派送啦,本周与大家一起分享的是重定向和管道 首先了解一下 读入数据:Input 输出数据:Output 我们来看一下重定向:  >  覆盖重定向 上面图中 > 文件名     创建空文件 touch 文件名 创建空文件 这两种方法都可以创建一个新的文…

    2017-07-21
  • 马哥教育网络班20期+第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。 3、请使用命令行展开功能来完成以下练习:    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d   …

    Linux干货 2016-06-23
  • 描述器

    Edit 描述器 |[Descriptors] 描述器的表现 用到3个魔术方法:__get__()、__set__()、__delete__() 方法用法: object.__get__(self,instance,owner) object.__set__(self,instance,value) object.__delete__(self,instan…

    Linux干货 2017-11-29