Linux plocate 命令 - 快速的查找文件和目录
• 最后修改:2025-09-06 • 阅读量:166
plocate
(英文全称为:parallel locate)是一款高效快速的文件搜索工具,它是传统 locate
命令的高性能版本,它的运行速度更快,数据库占用的存储更小。
本文将为你从多个方面介绍 plocate
命令的使用方法,使你对 plocate
命令具有基本的了解。
安装 plocate 命令
默认情况下,plocate
命令在各系统中是没有安装的,如果要使用 plocate
命令,需要在你的系统中安装 plocate
命令。
Debian / Ubuntu 系统
在 Debian / Ubuntu 系统中使用如下命令安装 plocate
:
sudo apt update
sudo apt install plocate -y
# 初始化数据库(替换传统locate)
sudo updatedb
RHEL / AlmaLinux系统
在 RHEL / AlmaLinux / Rocky Linux 系统中使用如下命令安装 plocate
:
# 启用EPEL仓库
sudo dnf install epel-release
# 安装plocate
sudo dnf install plocate
# 配置系统使用plocate
sudo alternatives --set locate /usr/bin/plocate
sudo updatedb
FreeBSD 系统
在 FreeBSD 系统中使用如下命令安装 plocate
:
# 通过pkg安装
sudo pkg install plocate
# 初始化数据库
sudo /usr/local/libexec/locate.updatedb
# 设置环境变量
echo 'export LOCATE_PATH=/var/db/plocate.db' >> ~/.bashrc
plocate 命令语法
如下给出 plocate
命令的基本语法形式:
plocate [选项]... 模式...
语法结构中各部分的解释说明:
- 选项:用于控制查找文件行为的参数
- 模式:用于匹配文件名的模式字符串
注意:使用 plocate
命令需要初始化或者更新该命令使用的数据库。
正则表达式模式介绍
plocate
命令中使用的正则表达式是 POSIX 基本正则表达式,它的使用规则如下:
.
:匹配任意单个字符*
:匹配前一个字符的 0 次或多次(注意*
本身是普通字符,仅当前面有有效字符时才会被作为量词对待)^
:匹配字符串开头位置$
:匹配字符串结尾位置[]
:指定字符集,字符只要匹配该字符集中的一个,既算匹配成功- 特殊元字符(如
+
、?
、()
等)需要使用转义字符\
转义
plocate 命令使用示例
1. 使用文件名查找文件
在模式部分,给出具体的文件名称,就可以按照文件名查找文件:
plocate nginx.conf
2. 使用通配符搜索文件
要查找特定类型的文件,可以使用通配符 *
查找全部的文件:
plocate *.service
如上的命令会查找出所有的服务配置文件,即:所有的以 .service
结尾的文件。
3. 使用正则表达式搜索
需要使用 -r
选项启用正则表达式查询:
plocate -r '202[0-9]-(0[1-9]|1[0-2])\.log$'
如上示例:使用正则表达式查找 2020-2029 年间所有月份的日志文件,正则表达式模式中不包含日期,如果文件包含日期则不能被匹配。
- [0-9]匹配 0 到 9 中的任意一个数字字符
- [0-2] 匹配 0 1 2 三个数字字符中的一个
4. 只显示特定数量的结果
使用 -n
选项,指定最多显示的结果条数:
bash
plocate -n 10 *.jpg
如上示例,只显示 10 个搜索结果。
5. 忽略匹配时的大小写
使用 -i
选项,匹配时忽略大小写差异,同一个字符的大写形式和小写形式认为是相同字符:
plocate -i README.md
plocate 命令选项详解
如下给出 plocate
命令选项的详细解释说明:
选项 | 说明 | 参数示例 |
---|---|---|
搜索控制选项 | ||
-i , --ignore-case |
搜索匹配时忽略大小写字符的不同 | |
-r , --regex |
启用正则表达式匹配模式 | -r '\.conf$' |
-w , --wholename |
匹配完整路径名称(该选项为默认值) | |
-b , --basename |
仅匹配文件名(忽略目录信息) | -b nginx.conf |
-p PATH , --path=PATH |
限定搜索的路径 | -p /var/log |
输出控制 | ||
-c , --count |
仅显示搜索匹配文件的数量 | |
-l N , --limit=N |
限定输出结果的记录条数 | -l 20 |
-n N , --number=N |
同 --limit 功能相同 |
|
-0 , --null |
使用 NULL 分隔多个结果 | |
--json |
使用 JSON 格式输出结果信息 | |
-S , --statistics |
显示性能统计信息 | |
系统配置 | ||
-d FILE , --database=FILE |
用于指定特定的数据库文件 | -d /ssd/plocate.db |
--help |
显示帮助信息 | |
--version |
显示版本信息 | |
-V , --verbose |
详细模式输出 |
数据库管理
plocate
从创建的数据库中读取数据,而不是直接根据从目录中搜索内容,因此需要维护其数据库。
数据库创建与更新
当创建目录、文件,删除目录、文件,后如果不更新数据库,修改的内容不会出现在数据库中,那么搜索的结果就不准确。使用如下命令更新数据库:
# 标准全量更新(如果还没有创建数据库,该命令会创建数据库)
sudo updatedb
# 增量更新(仅变化部分)
sudo updatedb --incremental
# 指定数据库文件存放的位置
sudo updatedb --database-root / --output /mnt/ssd/plocate.db
配置文件详解
/etc/updatedb.conf
关键配置及其解释说明:
# 排除搜索的路径(多个目录之间,使用空格分隔开来)
PRUNEPATHS="/tmp /proc /mnt"
# 排除文件搜索的系统类型
PRUNEFS="NFS tmpfs"
# plocate 专用设置
PRUNE_BIND_MOUNTS="yes" # 不索引绑定挂载
PLOCATE_USE_MMAP="1" # 启用内存映射加速
数据库文件的位置
各系统中数据库文件的默认位置如下所示:
系统 | 默认路径 | 大小对比(100万文件) |
---|---|---|
Linux | /var/lib/plocate/plocate.db |
35 MB |
FreeBSD | /var/db/plocate.db |
38 MB |
传统 mlocate | /var/lib/mlocate/mlocate.db |
65 MB |
结语
plocate
在其查找速度和性能上相比 locate
有了很大的进步。在本文中我们全面的介绍了 plocate
的语法结构及其功能,并给出了 plocate
命令的具体使用示例,相信你能够根据你的需求做出自己的判断。 plocate
命令可以在 Linux 各发行版和 FreeBSD 系统中使用,基本功能是相同的。