locate
是一种常见的 Unix 工具,用于按名称快速查找文件。它通过搜索预先构建的数据库文件来提高查找工具的速度,而不是直接搜索文件系统。这种方法的缺点是:自构建数据库文件以来所做的更改无法被 locate
检测到。有计划的数据库更新,可以最大程度地减少此问题。
mlocate (Merging Locate) 是一个更安全的locate 版本,它只显示用户可访问的文件。
plocate (Posting Locate) 是一个基于posting lists的定位工具,它提前使用 mlocate 的数据库,并从中制作更快(更小)的索引。
安装
虽然 GNU findutils 也包含一个 locate 实现,但 Arch 的 findutils包 软件包并不包含。
用法
在使用 locate(1) 之前,需要先创建数据库,这可以通过 updatedb(8) 命令来完成,顾名思义,它可以更新数据库。
mlocate包 包含一个 updatedb.timer
单元,而 plocate包 包含一个 plocate-updatedb.timer
单元。mlocate包 会在安装时启用定时器,如果你想在重启前使用它,可以手动启动它。你也可以随时以 root 身份手动运行 updatedb。
为了节省时间,updatedb 可以(在默认情况下)通过编辑 /etc/updatedb.conf
来忽略某些文件系统和路径。updatedb.conf(5) 描述了该文件的语义。值得注意的是,默认配置 (PRUNEPATHS
) 忽略的路径包括 /media
和 /mnt
,因此 locate 可能无法发现外部设备上的文件。