plocate 是一个更快的定位(mrocate 的替代品)

locate 是一种 Unix 工具,用于在文件系统上按名称搜索文件,并使用预先构建的生成文件数据库( updatedb)。用 locate 快点 find但是,您需要更新数据库才能找到新添加的文件。

locate BSD 和 GNU Fundutils 版本创建于 1982 年,源自原始实现。

plocate 更新(第一个稳定版本不到一年)并且速度更快 locate..它基于帖子列表,并以更小的索引提供更快的搜索。

命令行工具是替代品。 mlocate (合并定位;限制访问数据库,仅显示用户可访问的文件名),几乎所有方面包括重用 mlocate 数据库(定位用于创建自己的索引 plocate-build 读取创建的数据库 updatedb)、SSD 和 HDD 一样快。

plocate 通过在搜索字符串中的三元组(3 个字节的组合)上创建倒排索引来工作。这使您可以快速将一组建议缩小到一个非常小的列表,而不是线性扫描所有条目。如果可用,请使用 io_uring(Linux 5.1 或更高版本)异步执行几乎所有 I/O,以减轻秘密延迟对无 SSD 系统的影响。

您可能还喜欢:如何使用 find 查找最近 N 天或几分钟内发生变化的文件

为了展示 plocate 与 mrocate 相比有多快,plocate 开发人员在该工具的主页上展示了这个基准测试。在这个基准测试中,plotate 可以在短短几毫秒内找到 2700 万到 2 个文件。

场地表演

再次, mlocate, Plocate 显示与搜索查询匹配的所有文件,并且仅当运行命令的用户可见时才跳过所有受限文件。

如何安装和使用 plocate

plocate 在多个 Linux 发行版的官方存储库中可用,包括 Arch Linux / Manjaro 和 Debian(Bullseye 及更高版本和 Buster backporting)/Ubuntu(21.04 及更高版本)。您可以使用以下方法安装它:

  • Arch Linux / Manjaro:
sudo pacman -S plocate

  • Debian(Bullseye 及更高版本,以及 Buster backport)/Ubuntu(21.04 及更高版本):
plocate find files command linesudo apt install plocate

要在其他 Linux 发行版上构建,您需要 C++17 编译器、Zstd(开发头文件)和 Meson。 为了在 Fedora 上进行测试,我还必须安装 libatomic 来构建程序。如所须, liburing 和支持的内核 io_uring 为了获得最佳性能(自 Linux 5.1 起),尤其是在您不使用 SSD 的情况下。另一个可选的依赖项是 systemd,它可用于运行内置的定位数据库更新计时器。

在 Fedora 上安装 plotate 构建依赖项(包括选项) liburing), 用:

sudo dnf install libzstd-devel liburing-devel libatomic gcc-c++ meson

或者在 Ubuntu 20.04 等上构建(在 Ubuntu 20.04 liburing 由于它在存储库中,如果您使用的是普通硬盘,plotate 将不会使用所有功能),您将需要以下依赖项:

sudo apt install libzstd-dev meson build-essential

安装构建依赖项后,下载 plocate,解压缩,然后使用终端导航到该文件夹​​。您现在可以继续在您的系统上构建和安装 plotate。

meson obj

cd obj

ninja

sudo groupadd --system plocate

sudo ninja install

sudo systemctl enable plocate-updatedb.timer

您现在可以开始使用 plote。首次使用前,使用以下命令创建数据库(文件索引)。

sudo updatedb

第一次跑步时 updatedb, 扫描整个文件系统,但可能需要一些时间。后续执行应该快得多。

现在使用 plocate 当你使用 locate.. 使用 plocate 查找文件。

locate <MY_FILE.EXT>

交换 MY_FILE.EXT 与您要查找的文件。

有关其他选项(例如忽略大小写和正则表达式搜索),请参阅该工具的帮助和手册页。

您可能会喜欢:如何使用 find 删除 N 天之前或之后的文件(包括附加示例)

相关阅读:

Posted in: 指令代码