locate
是一个 Unix 工具,用于在文件系统上按名称查找文件,它使用生成文件的预构建数据库(使用 updatedb
)。 使用 locate
比 find
,但它需要更新数据库以查找新添加的文件。
locate
创建于 1982 年,BSD 和 GNU Findutils 版本源自原始实现。
plocate 是一个较新的(第一个稳定版本不到一年前),速度要快得多 locate
. 它基于发布列表,在更小的索引上提供更快的搜索。
命令行工具是替代品 mlocate
(合并定位;访问受限的数据库,仅显示用户可访问的文件名)几乎所有方面,包括重用 mlocate
数据库(使用 plocate 创建自己的索引 plocate-build
它读取由 updatedb
), 和 在 SSD 和 HDD 上都很快.
plocate 通过在搜索字符串中的三元组(三个字节的组合)上创建倒排索引来工作,这使它能够快速将候选集缩小到一个非常小的列表,而不是线性扫描每个条目。 如果可用(Linux 5.1+),它使用 io_uring 异步执行几乎所有 I/O,这减少了寻道延迟对没有 SSD 的系统的影响。
如何使用 find 查找最近 N 天或几分钟内修改过的文件
为了展示 plocate 与 mlocate 相比有多快,plocate 开发人员在该工具的主页上展示了此基准测试,其中 plocate 能够在几毫秒内找到 2700 万个文件中的 2 个: