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

时间:2020-03-05 15:28:50  来源:igfitidea点击:

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

locate [options] filename

尽管使用locate命令确实很简单,但它附带了许多if和buts。
对于来说,如果找不到文件,则不一定意味着该文件在系统上不存在。

我将解释locate命令的工作方式以及如何使用它查找文件。

在Linux中使用定位命令locate

定位命令适用于索引,例如:文件位置数据库。
使用该命令时,它引用此索引而不是搜索整个文件系统。
这就是为什么locate在Linux中快速找到文件的原因。

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

使用locate命令非常简单。
我们只需要指定文件名:

locate filename

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

Hyman@theitroad:~$locate desktop.iso
/home/igi/desktop.iso

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

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

Hyman@theitroad:~$locate -i desktop.iso
/home/igi/desktop.iso
/home/igi/Downloads/Desktop.iso

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

Hyman@theitroad:~$locate -i desktop
/home/igi/eoan-desktop-amd64.iso
/home/igi/Bionic-Desktop-amd64.iso
/home/igi/desktop.iso
/home/igi/Downloads/Desktop.iso

我们也可以将regex与locate一起使用:

locate -r regex_expression

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

这只是出于提供信息的目的,我认为我们不需要使用它。

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

updatedb -l0 -U my_directory -o index_file

创建此索引文件后,可以要求locate命令显式使用此索引:

locate -d index_file file_name

locate是否比find命令更好?

如果我们希望搜索目录结构不变的文件,那么使用locate命令是个不错的选择。这也是超级快。

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