首页 >> 精选问答 >

问locate 的指令 快速查找文件命令

2026-11-08 23:19:21

答

locate 指令是 Linux 系统里专门用来按文件名快速搜索文件的命令,它和 find 指令最大差别就是 locate 不会实时遍历整个磁盘,而是读取预先建好的数据库索引完成检索,搜索速度非常快,适合大批量文件名匹配查询。之所以搜索速度快,是因为 locate 依赖系统定时任务自动更新的文件索引数据库,数据库记录了系统里绝大部分文件的路径名称,查询的时候直接匹配数据库内容,不用逐个扫描目录。但是这个机制也带来短板,新建的文件如果还没有更新索引,locate 就查不到,这也是很多新手使用 locate 最常遇到的问题。使用 locate 指令首先确认系统已经安装 mlocate 包,很多精简版系统默认没有预装,第二步执行 updatedb 命令手动更新索引数据库,第三步输入 locate 加上要查找的文件名关键字,系统就会输出全部匹配的文件完整路径,还可以搭配参数实现忽略大小写统计数量只显示存在文件等效果。整体来看 locate 适合日常快速检索已知文件名的场景,如果要求实时精确查找或者需要按大小修改时间权限筛选,还是要选用 find 指令。

locate 指令基础原理

locate 底层依靠 updatedb 生成的索引数据库,数据库默认存放路径在 var/lib/mlocate/mlocate.db。系统默认会通过 cron 定时任务每天自动执行一次 updatedb,自动刷新索引,把新增删除修改的文件信息同步到数据库。普通用户执行 locate 的时候,只能读取自己有权限访问的文件记录,没有读取权限的目录内容不会展示在搜索结果里面,这个权限规则和 find 保持一致。

常用基础语法

基础格式 locate 搜索关键字

执行之后会返回所有路径里面包含这个关键字的文件和目录完整绝对路径,支持部分匹配,不需要输入完整文件名。

举个例子 locate test,会把所有路径名称带有 test 的文件全部列出来,不管是前缀中间还是后缀匹配都可以命中。

核心参数清单

参数作用说明
i搜索的时候忽略大小写,Test 和 test 都可以匹配
c只输出匹配结果总数量,不打印完整文件路径
e只输出当前磁盘上仍然真实存在的文件,过滤已经删除但是索引还残留的记录
l 数字限制最多输出指定条数结果
r使用正则表达式进行匹配搜索,适合复杂名称规则检索
n 数字限制输出结果最大行数,和 l 参数作用接近
h查看 locate 指令自带帮助说明

locate 和 find 指令深度对比

对比项目locate 指令find 指令
检索方式查询预建索引数据库实时遍历磁盘目录
搜索速度非常快速度偏慢,磁盘文件越多越慢
实时性依赖索引更新,新建文件可能查不到实时扫描,结果实时准确
筛选能力只能按文件名匹配,筛选能力弱支持大小时间权限类型多条件筛选
资源占用很低高,全盘扫描会占用磁盘 IO
适用场景快速查找已知文件名需要实时结果多条件高级筛选

常见操作步骤

第一步 安装组件

Debian Ubuntu 系统执行 apt install mlocate

CentOS RHEL 系统执行 yum install mlocate 或者 dnf install mlocate

第二步 更新索引

执行 updatedb,这个命令一般需要 root 权限,执行过程根据磁盘文件总量耗时不同,文件越多等待时间越长

第三步 基础搜索

locate 目标文件名

第四步 进阶组合用法

locate i nginx 忽略大小写查找 nginx 相关文件

locate c conf 统计名称包含 conf 的文件总数

locate e log 只保留现在真实存在的 log 相关文件

使用注意事项

第一 新建文件之后立刻用 locate 查询大概率找不到,必须先运行 updatedb 刷新索引

第二 删除旧文件之后,如果没有更新索引,locate 依旧会输出这个已经不存在的旧路径,搭配 e 参数可以过滤这类无效记录

第三 全盘加密目录或者特殊挂载目录,updatedb 默认可能不会收录,会出现 locate 检索遗漏

第四 普通用户执行 updatedb 权限不足,需要切换 root 账号执行,否则索引更新不完整

【常见问题】

问题 1 为什么刚新建的文件用 locate 指令搜索不到

回答 1 locate 指令读取的是预先建立的索引数据库,新文件还没有被 updatedb 写入索引,所以 locate 指令无法识别,手动执行 updatedb 更新数据库之后就可以正常搜索。

问题 2 locate 指令找不到命令是什么原因

回答 1 系统没有安装 mlocate 软件包就会提示 locate 指令找不到,需要通过系统包管理器安装 mlocate 组件,安装完成之后 locate 指令才可以正常调用。

问题 3 locate 指令可以按文件大小查找吗

回答 1 locate 指令核心功能是文件名检索,原生不支持按文件大小筛选,如果需要按大小查找文件,不能只依靠 locate 指令,需要搭配 find 指令完成多条件筛选。

问题 4 locate 指令搜索结果里面出现已经删除的文件路径怎么办

回答 1 这是因为旧索引还保留了删除文件记录,可以执行 updatedb 更新索引,也可以在 locate 指令后面加上 e 参数,过滤掉磁盘上已经不存在的记录。

【免责申明】

本文内容仅作为 Linux 技术学习参考,不同发行版 locate 指令版本参数存在差异,实际操作请参考系统官方手册,本文不对操作产生的系统异常数据丢失等损失承担责任。

 

相关阅读

标签: locate的指令
最新文章