[8-30]文件查找命令locate、find知识梳理

本文旨在梳理文件查找命令Locate、Find基本原理,基本用法。

知识储备

  • Locate是非实时查找工具

    • 依赖于事先构建好的索引,索引构建是系统比较空间时候自动完成;

    • 除了周期性地自动更新索引,可以使用updatedb手工更新和指定更新;

    • 优点:查找速度很快;模糊查找[不精确匹配]

    • 缺点:建立索引和现实时间存在时间差,所以可能出现新建文件找不到;

  • Find是实时查找工具

    • 查找依据文件系统,最新的真正意义的 遍历 全局;

    • 精确查找[文件名对比时,必须完全一样]

    • 优点:精确查找,最新遍历不会遗漏

    • 缺点:查找速度略慢,占用一定系统资源[不建议系统繁忙、整个根目录查找]

  • 俩者的比较图

wKiom1XqS5rQcLyXAArj-NxFh7g207.bmp


Locate命令

Usage: locate [OPTION]... PATTERN...

  1. 模式可以使用正则表达式

  2. 默认情况下是匹配整个路径名有符合即可

常用参数

-b        只显示路径基名匹配的条目-w        匹配整个路径名 [默认]-c UID    只统计总统匹配多少条    -i        忽略大小写-d, --database DBPATH   指定数据库来查找请注意:默认情况下,由/etc/cron.daily/mlocate.cron定期索引到的条目存放在数据库/var/lib/mlocate/mlocate.db中,我们可以修改这个数据库位置,当然也可以从特定的数据库进行文件查找

手工更新数据库

wKioL1XqUNvh7zkdAAG7QHu-yvM425.jpg


Find命令

Usage: Find [OPTION].... [查找路径] [查找条件] [处理动作]

  • 查找路径:默认为当前路径;

  • 查找条件:指定的查找标准,可以根据文件名、大小、属主、属组、类型等进行;

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


<1>查找条件

wKiom1XqUm_wJzsJAAmt-JQ11I4239.bmp

文件类型

    • -type 类型

    • 文件类型可以有:f[普通文件]、b、c、d、l、p[管道文件]、s[套接字文件]

    • 请注意:硬链接其实是普通文件类型,软链接是L类型 

文件权限

wKioL1XqZNXxDsR4AAtuEHbsgsA411.bmp

wKiom1XqaWehq2mVAACpsuyYGg8257.jpg

属主匹配

    • -uid    UserID

    • -user   UserName

    • -nouser 没有属主的文件,当用户被删除时,原有文件属主变为该用户的UID 

属组匹配

    • -gid   GID

    • -group GroupName

    • -nogroup 当组被删除时,原有文件属组变为该组的GID

文件大小

    wKiom1XqWZ-Tbey2AAh-GBCPLko544.bmp

时间戳

    • 以对3类时间戳:访问时间、修改时间、改变时间进行匹配查找;

    • 以"天"为单位. atime、mtime、ctime相同;wKiom1XqVlyBDUVfAAYsCCppTXA408.bmp

    • 以"分钟"为单位.amin、mmin、cmin相同;wKiom1XqVz7BRSISAAbZnDXoIBc993.bmp

文件名

    • -name FileName根据文件名进行查找,支持GLOB通配;严格区分大小写,精确查找;

    • -iname FileName支持使用GLOB通配,不区分文件名中的大小写;

    • -regex “PATTERN”模式匹配整个文件路径字符串,而并不仅仅是文件名称;

组合查找条件

    • 多个条件可以共同使用,叫做组合条件;组合条件有3种简单关系;关系之间可嵌套

    • 与条件:-a                   优先级较高 ,-a是可以省略的

    • 或条件:-o                   优先级最低

    • 非条件:-not[!]               优先级最高


<2>处理动作

当匹配到指定的文件之后,常用的处理动作有

-print                默认处理动作,打印输出
-fprint               能够按照指定格式打印输出
-ls                   类似于对查找到的每个文件做ls -l操作
-delete               删除查找到的文件,危险慎用
-fls /Path            查找到的文件的详细路径信息保存至指定文件中
-ok Command {} \;     对查找到的文件执行指定命令,{} 用来替代查找到的具体文件,可多次引用使用
                     对每个文件执行指定的命令之前需要用户事先确认;
-exec Command {} \;   无需用户确认;

你可能感兴趣的:(find,locate)