Linux locate
约 918 字大约 3 分钟
2025-01-11
介绍
locate
命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。一般情况我们只需要输入 locate filename
即可查找指定文件。
locate
是一个快速文件查找工具,通过预构建的数据库(通常是 /var/lib/mlocate/mlocate.db
或 /var/cache/locate/locatedb
)来检索文件路径,而不是直接遍历文件系统。
注意 推荐使用 mlocate
因为它是 locate
和 slocate
的现代替代品,结合了二者的优点。
语法
$ locate [-d ][--help][--version][范本样式...]
参数:
-b, --basename
:仅匹配路径名的基本名称-c, --count
:只输出找到的数量-d, --database DBPATH
:使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db-e, --existing
:仅打印当前现有文件的条目-1
:如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。-0, --null
:在输出上带有NUL的单独条目-S, --statistics
:不搜索条目,打印有关每个数据库的统计信息-q
:安静模式,不会显示任何错误讯息。-P, --nofollow, -H
:检查文件存在时不要遵循尾随的符号链接-l, --limit, -n LIMIT
:将输出(或计数)限制为LIMIT个条目-n
:至多显示 n个输出。-m, --mmap
:被忽略,为了向后兼容-r, --regexp REGEXP
:使用基本正则表达式--regex
:使用扩展正则表达式-q, --quiet
:安静模式,不会显示任何错误讯息-s, --stdio
:被忽略,为了向后兼容-o
:指定资料库存的名称。-h, --help
:显示帮助-i, --ignore-case
:忽略大小写-V, --version
:显示版本信息
预构建的数据库
这个命令比较特殊,它需要事先建立索引数据库才能使用。初次使用locate
命令时,会有会提示创建数据库:
$ locate ls
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
根据提示,执行以下命令创建数据库:
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
创建数据库后,方可使用locate
命令。
提示 如果未检索到内容,可以使用updatedb
命令来更新数据库后,再次检索。
应用
使用locate
查询指令的路径
Linux
中一切皆为文件,指令也是文件,所以可以使用locate
来查询指令的路径。
使用locate
来查询指令的路径命令如下:
$ locate [选项] <模式>
如查询Linux
系统中所有以.txt
结尾的文件,命令如下:
$ locate .txt
总结
特点
- 非常快,因为它查找的是数据库,而不是实时遍历磁盘。
- 数据库需要定期更新(通常通过 updatedb 命令或由系统的定时任务自动更新)。
- 对用户权限敏感,可能会显示用户无权限访问的文件路径。
mlocate
、slocate
、locate
的区别
特性 | locate | slocate | mlocate |
---|---|---|---|
权限控制 | 不支持 | 支持 | 支持 |
数据库更新速度 | 全量更新,较慢 | 全量更新,较慢 | 增量更新,更高效 |
使用场景 | 单用户快速查找文件 | 多用户环境注重安全性 | 现代化多用户环境 |