了解 Linux 中的 locate 命令

顾名思义,Linux 中的 locate 命令用于按名称查找系统中的文件。 此命令比用于相同目的的突出 find 命令更有效。 这种功效的原因是 locate 命令使用数据库而不是遍历整个文件结构。

如果您的系统上没有该实用程序,您可以下载 mlocate 包裹。 Ubuntu 用户可以通过运行来安装它:

sudo apt install mlocate 

而其他 Linux 用户可以使用他们的标准安装命令安装它,然后是 mlocate.

如何在 Linux 中使用 locate 命令?

让我们回顾一下 Linux 中 locate 命令的特性和功能。 然而,正如我们之前提到的,locate 命令会搜索一个数据库。 所以我将首先更新数据库。

1.更新mlocate数据库

locate 命令取决于 mlocate (合并定位)数据库。 Cron 实用程序负责每天更新数据库。 有兴趣的读者可以访问 mlocate 文件在 /etc/cron.daily/ 目录以了解所涉及的过程。

有一种手动方法可以通过运行来更新数据库 sudo 更新数据库 在终端。 这 mlocate 数据库重用其现有数据库,因此可以立即实现更新。

使用数据库搜索文件的主要缺点是在我们尝试搜索任何新创建的文件之前需要更新数据库。

2. 使用 locate 命令按名称搜索文件/文件夹

我们可以使用 locate 命令按名称搜索文件或文件夹:

locate -b <FILE_NAME> 
使用 locate 命令搜索文件
locate -b <FOLDER_NAME> 
使用 locate 命令搜索文件夹

从代码片段中可以看出,该命令返回文件和文件夹的绝对路径及其名称。 这 '-b' 选项告诉命令在基本名称中搜索名称,而不是包括完整路径。

以下输出将阐明差异。

定位命令搜索全名定位命令搜索全名

命令没有 '-b' 标志包括所有在其路径中包含文件夹名称的文件。

3.统计匹配文件数

locate 命令可以轻松返回匹配文件的计数。 以下命令打印数量 .txt 系统中的文件。

locate -c .txt 
定位命令计数使用 locate 命令计算文件数

'-c' option 是指与指定模式匹配的文件数。

4.限制locate命令输出中的项数

由于系统中有数千个文件,输出的大小会急剧增加并溢出终端。 因此, locate 命令提供 '-n' 限制输出中项目数的标志。

locate -n 5 .txt 
定位命令限制在系统中显示5个.txt文件

5. 仅显示现有文件

如前所述,每次添加或删除文件时都需要更新数据库。 有一种快捷方式可以验证系统中文件的存在。

locate -e <FILE_NAME> 
定位命令存在验证“onepiece”是否存在

在上面的终端片段中,我们删除了文本文件,然后尝试使用普通命令定位该文件。 正如我们所见,标准命令返回文件名,即使它已经被删除。 ‘-e’ 标志的目的是通过验证文件是否存在来解决这种情况。

上述标志的一个简单替代方法是通过运行更新数据库 sudo 更新数据库.

6. 搜索时忽略大小写

默认情况下,Linux locate 命令区分大小写。 有一个内置选项可以关闭案例检查模块。

locate -i LiNuX 
定位命令区分大小写 1在忽略大小写的同时搜索文件

即使字母大小写混乱,该命令也能有效地找到名称中包含“linux”的文件。

7. 使用正则表达式进行搜索

我们尚未讨论的一个重要方法是,当我们在没有任何附加选项的情况下搜索文件时,locate 命令返回包含匹配字符串的文件,而不是相同的文件名。

如上例所示,输出显示 包含的文件名 “linux”,而不是完全命名为“linux”的文件。

这背后的原因是当匹配没有 '--regex' 选项,如果我们使用 “Linux” 作为匹配字符串,该命令将匹配模式转换为 “*Linux*”,这将转换为名称之间包含“linux”的所有文件。

locate 命令提供 '--regex' 搜索复杂模式的选项。

locate --regex "PATTERN" 

为了匹配名称与匹配字符串相同的文件,我们使用:

locate --regex "/STRING$" 
定位命令正则表达式 1与匹配字符串相同的文件名

除了匹配正则表达式,上图中的命令还限制了输出项的数量为 10。要了解有关正则表达式的更多信息,请访问此处。

8.使用locate命令搜索其他数据库

文件名的定位通过 mlocate 默认数据库。 的创造者 locate 命令添加了在用户定义的数据库中定位文件的选项。 这可以通过使用 '-d' 选项。

locate -d <DB_NAME> <PATTERN> 

如果当前工作目录中不存在数据库,则需要相对路径。

结论

locate command 是一个简单的 Linux 实用程序,可以有效地搜索文件。 find 命令用于类似的目的并且有更多的背景,但是作为一个复杂的命令降低了它在新 Linux 用户中的受欢迎程度。 要了解有关 locate 命令的更多信息,您可以使用 man 命令通读手册页。