locate - Arch Linux 中文维基

跳转到内容

# locate

来自 Arch Linux 中文维基

相关文章

- find
- 核心工具
- 应用程序列表/工具#文件搜索

翻译状态：

- 本文（或部分内容）译自 locate，最近一次同步于 2025-03-02，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

locate （即定位）是一种常用的 Unix 工具，用于通过文件名快速查找文件。与 find 工具相比，locate 通过搜索预先构建的数据库文件，而不是直接搜索文件系统，提高了查找速度。这种方法的缺点是，`locate` 无法检测到数据库文件生成后的更改。通过按计划更新数据库，可以将这一问题降至最低。

随着时间的推移，各种替代实现经历了迭代更替：从仅显示用户可访问文件的 slocate（secure locate，安全定位），到每次更新时合并数据库的 mlocate（merging locate，合并定位）——这种合并机制通过跳过已检查文件实现了性能提升，再到如今基于倒排列表构建的 plocate（posting locate，列表定位），它通过预先处理数据库生成速度更快、体积更小的索引。

## 安装

安装 plocate包 软件包。它提供了 `plocate`、`updatedb`、`plocate-build` 等命令以及指向 `plocate` 的符号链接 `locate`、`mlocate`。

虽然 GNU findutils 也包含 locate 实现，但 Arch 的 findutils包 软件包并不包含。

LS-Shandong 维护了一个 plocate 分叉，这个分叉包含了 Steinar 正考虑合并入官方 plocate 的 i18n 支持及软件的简体中文翻译和手册页翻译。安装 plocate-enhanced-gitAUR 软件包以获取它。

## 用法

在使用 plocate(1) 之前，需要先创建数据库，这可以通过 updatedb(8) 命令完成，顾名思义，该命令用于更新数据库。

plocate包 包含一个 `plocate-updatedb.timer` 单元，每天都会调用数据库更新，安装时已启用。如果想在重启前使用，请手动启动启动。您也可以随时以根用户身份手动运行 updatedb。

为节省时间，（默认情况下）可以通过编辑 `/etc/updatedb.conf` 配置 updatedb 忽略某些文件系统和路径。updatedb.conf(5) 介绍了该文件的语义。值得注意的是，默认配置（`PRUNEPATHS`）中忽略的路径包括 `/media` 和 `/mnt`，因此 locate 可能无法发现外部设备上的文件。

## 问题解决

### Btrfs

默认配置会阻止结果中包含 Btrfs 文件系统。要允许包含 btrfs 挂载点，请添加

    /etc/updatedb.conf

    PRUNE_BIND_MOUNTS = "no"

当然，这也意味着其他绑定挂载点也会被包含在内。如果需要排除这些挂载点，可以使用同一配置文件中的 `PRUNEPATHS` 设置。

## 参见

- How locate works and rewrite it in one minute
- plocate 官方网站

分类：​

- 搜索

locate
添加话题