文件查找: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

相关推荐

  • LVM基础

    逻辑卷的原理 逻辑卷的组成上包括物理卷,逻辑组,逻辑卷 物理卷即是磁盘分区或者块设备经过转换以后形成的抽象的逻辑设备 逻辑组即是将物理卷进行统一打包,合成一个更大的逻辑上的分区 逻辑卷是在逻辑组的基础上细分的课动态调节的虚拟磁盘分 其工作原理是通过某种机制将物理上的块设备或者分区抽象的进行封装,然后以逻辑卷的方式统一呈现给 上层的应用 逻辑卷的操作 一:创建…

    2017-05-01
  • Linux逻辑卷LVM实现

    Linux逻辑卷LVM实现 背景: 在学习Linux中,学习到了逻辑卷LVM,发现LVM是个十分好用的一个技术,可以多个硬盘合并在一起使用,同时还可以动态的增加和减少。在这里将Linux逻辑卷的具体实现记录下来。 介绍: 逻辑卷LVM:Logica Volum Manager,它是Linux环境下对磁盘分区进行管理的一种机制,普通的磁盘分区管理方式在逻辑分区…

    2017-08-12
  • N25 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; 3、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行; 4、添加用户bash, testbash, basher, nol…

    Linux干货 2017-01-08
  • 如何自建系统内部 yum 仓库

       准备:     a.素材:一套centos6.9和一套centos7.3的ISO镜像光盘     环境:1.centos6.9和centos7.3,安装好的系统各一套(土豪随意 )     b.建立前请关闭防火墙,防止防火墙的干扰     &n…

    2017-08-05
  • 千万不要把 bool 设计成函数参数

    我们有很多Coding Style 或 代码规范。但这一条可能会经常被我们所遗忘,就是我们经常会在函数的参数里使用bool参数,这会大大地降低代码的可读性。不信?我们先来看看下面的代码。 当你读到下面的代码,你会觉得这个代码是什么意思? widget->repaint(false); 是不要repaint吗?还是别的什么意思?看了文档后,我们才知道这个…

    Linux干货 2016-07-10