You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# **locate**
## 说明
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需
查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行
locate命令可以在搜寻数据库时快速找到档案数据库/var/lib/locatedb由updatedb程序来更新数据库含有本地所有的文件信息updatedb
是由cron daemon周期性建立的locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快但较差劲的是locate所找到的档案若是最近才建立
或 刚更名的可能会找不到为了避免这种情况可以在使用locate之前先使用updatedb命令手动更新数据库。在内定值中updatedb每天会
跑一次可以由修改crontab来更新设定值。(etc/crontab)
locate指定用在搜寻符合条件的档案它会去储存档案与目录名称的数据库内寻找合乎范本样式条件的档案或目录录可以使用特殊字元
(如”*” 或”?”等来指定范本样式如指定范本为kcpa*ner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录如名称为kcpartner
若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案
locate指令和find找寻档案的功能类似但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库在 执行loacte时直接
找该索引查询速度会较快索引数据库一般是由操作系统管理但也可以直接下达update强迫系统立即修改索引数据库
## 选项
```markdown
Usage: locate [OPTION]... [PATTERN]... 在mlocate数据库中搜索条目
-A,--all 仅打印匹配所有模式的条目
-b,--basename 仅匹配路径名的基本名称
-c,--count 仅打印找到的条目数
-d,--database DBPATH 使用DBPATH而不是默认数据库(即/var/lib/mlocate/mlocate.db)
-e,--existing 仅打印当前现有文件的条目
-L,--follow 检查文件是否存在时跟踪尾随符号链接(default)
-i,--ignore-case 匹配模式时忽略大小写区别
-l,--limit, -n LIMIT 将输出或计数限制为LIMIT条目
-m,--mmap 忽略,以便向后兼容
-P,--nofollow, -H 检查文件是否存在时,不要跟随尾随符号链接
-0,--null 在输出上单独输入ZERO
-S,--statistics 不搜索全部,只打印每一个匹配的数据库
-q,--quiet 报告没有关于读取数据库的错误消息,不会显示任何错误讯息
-r,--regexp REGEXP 搜索基本的正则表达式REGEXP而不是模式
--regex 模式是扩展的正则表达式
-s,--stdio 忽略,以便向后兼容
-w,--wholename 匹配整个路径名(default)
```
## 实例
```bash
locate pwd # 查找和pwd相关的所有文件数据库
locate /etc/sh # 搜索etc目录下所有以sh开头的文件
locate -r 'file[^/]*\.txt' # 使用locate 查找所有符合*file*.txt的文件
```