顾名思义,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 命令。
你怎么看?