跳转至内容

locate

来自 ArchWiki

locate 是一个常用的 Unix 工具,用于通过名称快速查找文件。它通过搜索预先构建的数据库文件而不是直接搜索 文件系统 来提供比 find 工具更快的速度。这种方法的缺点是 locate 无法检测自数据库文件创建以来所做的更改。通过计划的数据库更新可以最小化此问题。

随着时间的推移,替代实现已经互相取代,从 slocate (secure locate,仅显示用户可访问的文件),到 mlocate (merging locate,在每次更新时合并数据库),它提供了性能提升,因为它可以在每次更新时跳过先前检查过的文件,到今天的 plocate (posting locate),plocate 是一个基于 倒排索引 的 locate,它提前消耗数据库并从中创建一个更快(也更小)的索引。

安装

安装 plocate 包。

虽然 GNU findutils 也包含一个 locate 实现,但 Arch 的 findutils 包不包含。

用法

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

plocate 包含一个 plocate-updatedb.timer 单元,它每天调用一次数据库更新,并在安装时启用。如果您想在重启前使用它,请手动 启动 它。您也可以随时手动以 root 身份运行 updatedb

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

故障排除

Btrfs

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

/etc/updatedb.conf
PRUNE_BIND_MOUNTS = "no"

当然,请注意,这也意味着其他绑定挂载点也将被包含。如果您需要排除这些挂载点,可以使用同一配置文件中的 PRUNEPATHS 设置。

参见