使用 Locate 命令在 Linux 中快速搜索文件

顾名思义,Linux 中的 locate 命令用于定位(搜索)文件。 它具有以下语法:

locate [options] filename

虽然使用 locate 命令非常简单,但它带有许多 if 和 buts。 首先,如果它没有找到文件,并不一定意味着该文件在系统上不存在。

暂时不要迷茫。 我将解释定位命令的工作原理以及如何使用它来查找文件。

在 Linux 中使用定位命令

locate 命令作用于索引,即文件位置的数据库。 当您使用该命令时,它引用此索引而不是搜索整个文件系统。 这就是为什么 locate 在 Linux 中查找文件的速度非常快的原因。

一些 Linux 发行版会定期自动索引整个文件系统。 您也可以手动构建此索引(我将在本文后面向您展示)。

使用定位命令非常简单。 您只需指定文件名:

locate filename

结果将显示找到您指定的文件的所有位置。

[email protected]:~$ locate desktop.iso
/home/abhishek/desktop.iso

最好的部分是您无需在某个目录中即可找到该文件。 请记住,locate 命令不搜索文件系统,而是搜索索引。 这就是为什么您在查找文件时不需要指定路径或目录的原因。

您还可以使用 -i 选项执行不区分大小写的搜索:

[email protected]:~$ locate -i desktop.iso
/home/abhishek/desktop.iso
/home/abhishek/Downloads/Desktop.iso

请记住,结果可能会显示名称中包含搜索词的所有文件。

[email protected]:~$ locate -i desktop
/home/abhishek/eoan-desktop-amd64.iso
/home/abhishek/Bionic-Desktop-amd64.iso
/home/abhishek/desktop.iso
/home/abhishek/Downloads/Desktop.iso

您也可以将正则表达式与定位一起使用:

locate -r regex_expression

使用 updatedb 为 locate 命令创建自己的索引

这仅用于提供信息,我认为您不需要使用它。

如果要创建当前目录(及其子目录)的索引,可以使用 updatedb 命令,如下所示:

updatedb -l0 -U my_directory -o index_file

一旦你创建了这个索引文件,你可以让 locate 命令显式地使用这个索引:

locate -d index_file file_name

locate 比 find 命令好吗?

如果你想在一个变化不大的目录结构中搜索文件, 定位命令 是一个不错的选择。 它也超级快。

但是 find 命令为您提供了很多选项,特别是用于执行复杂的搜索选项。

这两个命令都有其用途。 在我看来,如果您感到懒惰并想要快速获得结果,请使用定位。 如果结果不符合您的喜好,请切换到 find 命令。

你怎么看?