1、locate 简介
locate命令和slocate命令都用来查找文件或目录。
locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,locate查询文件时,会去搜索/var/lib/mlocate/mlocage.db,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*“或 “?”等)来指定范本样式,如指定范本为kcpa_ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。
locate指令和find找寻档案的功能类似,但locate是通过updatedb程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
locate 命令安装
1 | yum install -y mlocate |
locate 语法
1 | locate/slocate [选项] [参数] |
locate 命令选项
选项 | 说明 |
---|---|
-A, –all | 只显示匹配所有模式的条目 |
-b, –basename | 只匹配路径名的基本名称 |
-c, –count | 只显示找到的条目的数目 |
-d, –database DBPATH | 使用 DBPATH,而非默认数据(即:/var/lib/mlocate/mlocate.db) |
-e, –existing | 只显示当前存在的文件条目 |
-L, –follow | 当文件存在时跟随蔓延的符号链接(默认) |
-h, –help | 显示帮助信息 |
-i, –ignore-case | 匹配模式时忽略大小写区别 |
-l, –limit, -n LIMIT | 限制为 LIMIT项目的输出(或 计数) |
-m, –mmap | 被忽略,用于向后兼容 |
-P, –nofollow, -H | 当检查文件时不跟随蔓延的符号链接 |
-0, –null | 输出时以 NUL 分隔项目 |
-S, –statistics | 不搜索项目,显示有关每个已用数据库的统计信息 |
-q, –quiet | 不报告关于读取数据库的错误消息 |
-r, –regexp REGEXP | 搜索基本正则表达式 REGEXP 而不是模式 |
–regex | 模式是扩展正则表达式 |
-s, –stdio | 被忽略,用于向后兼容 |
-V, –version | 显示版本信息 |
-w, –wholename | 匹配完整路径名(默认) |
2、locate 命令示例
2.1 搜索目录下所有以 sh 开头的文件
1 | [wang@localhost ~]$ locate /etc/sh |
2.2 查找包含某个字符串的相关文件
1 | [wang@localhost ~]$ locate passwd |
2.3 限定显示数量
如果显示的内容过多,可以使用 -n 选项来限定显示数量
1 | [wang@localhost ~]$ locate -n 5 passwd |
2.4 查找时不区分大小写
当查找不需要区分大小写时,使用 -i 选项
1 | [wang@localhost ~]$ locate -i -n 5 passwd |
2.5 使用正则表达式
当需要查找符合特定规则的信息时,可以使用 -r 选项匹配相应的正则表达式
查找以 /var/lib/rpm 开头的文件
1 | [wang@localhost ~]$ locate -r ^/var/lib/rpm |
查找以 zip 结尾的文件
1 | [wang@localhost ~]$ locate -r zip$ |
2.6 查找最近变动过的文件
使用 locate 命令查不到最近变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库
1 | # 新建文件 |