Skip to main content

Linux 核心命令

文件和目录管理命令 locate

locate 是 Linux 系统里一个用来快速搜索文件路径的命令。它的速度非常快,因为它不是在整个文件系统里实时查找,而是通过一个预先建立的数据库来匹配文件路径。这个数据库通常由 updatedb 命令生成和更新。

1. 基本用法

在使用之前 Ubuntu 需要手动安装

sudo apt install plocate

最简单的就是直接搜索包含关键字的文件路径:

locate filename

例子:查找系统里所有包含 passwd 的文件路径

locate passwd

2. 搜索前更新数据库

locate 查找依赖 /var/lib/mlocate/mlocate.db 或者 /var/lib/plocate/plocate.db这样的数据库,而不是实时扫描,所以如果新文件没被找到,可能是数据库没更新。用 updatedb 来更新:

sudo updatedb

更新后再搜索,就能找到刚创建的文件了。

3. 区分大小写

默认 locate 搜索不区分大小写,如果需要严格区分,可以加 -c-i 结合使用,或者直接用 --regex 精准匹配。

例子:区分大小写搜索

locate --regex '/Home/.*File.txt'

4. 限制输出数量

搜索结果太多的话,可以用 -n 限制返回条数,例如只显示前 10 条:

locate -n 10 passwd

5. 统计匹配数量

只想知道有多少条匹配,可以加 -c 参数:

locate -c passwd

6. 使用正则表达式匹配

--regex 参数可以用正则表达式匹配路径,适合更精准的搜索:

locate --regex '.*\.conf$'

7. 精确匹配整个文件名

结合正则 ^$ 进行完整匹配,例如查找名字正好是 passwd 的文件:

locate --regex '/passwd$'

8. 过滤搜索范围

使用管道配合 grep 来筛选结果,比如只搜索 /etc 目录下的匹配项:

locate passwd | grep '^/etc/'

9. 忽略某些目录

locate 本身不会直接排除目录,但可以配合 grep -v 来实现,例如排除 /proc 目录:

locate passwd | grep -v '^/proc/'

10. 结合通配符(需要正则)

locate 不直接支持 shell 通配符匹配,而是可以用 --regex 模拟,比如匹配 .log.txt 结尾的文件:

locate --regex '.*\.\(log\|txt\)$'