Linux中使用Locate命令快速查找文件
locate 命令允许您对文件执行超快速搜索。在本教程中,您将了解locate 命令的工作原理以及如何使用它。
顾名思义,Linux中的locate命令用于定位(搜索)文件。它具有以下语法:
locate [options] filename
虽然使用locate命令非常简单,但它带有很多如果和但是。首先,如果没有找到文件,并不一定意味着该文件在系统上不存在。
现在不要感到困惑。我将解释locate命令的工作原理以及如何使用它来查找文件。
在Linux中使用locate命令
locate 命令作用于索引,即文件位置的数据库。当您使用该命令时,它引用该索引而不是搜索整个文件系统。这就是为什么locate 在Linux 中查找文件速度非常快的原因。
一些 Linux 发行版会定期自动索引整个文件系统。您还可以手动构建此索引(我将在本文后面向您展示)。
使用locate命令非常简单。您只需指定文件名:
locate filename
结果将显示找到您指定的文件的所有位置。
abhishek@linux:~$ locate desktop.iso
/home/abhishek/desktop.iso
最好的部分是您不需要在某个目录中即可找到该文件。请记住,locate 命令不会搜索文件系统,而是搜索索引。这就是为什么您在查找文件时不需要指定路径或目录。
您还可以使用 -i 选项执行不区分大小写的搜索:
abhishek@linux:~$ locate -i desktop.iso
/home/abhishek/desktop.iso
/home/abhishek/Downloads/Desktop.iso
请记住,结果可能会显示名称中包含搜索词的所有文件。
abhishek@linux:~$ 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一起使用:
locate -r regex_expression
使用updatedb为locate命令创建自己的索引
这仅供参考,我认为您不需要使用它。
您可以像这样手动重建整个系统的数据库:
sudo updatedb
如果要创建当前目录(及其子目录)的索引,可以使用updatedb命令,如下所示:
updatedb -l0 -U my_directory -o index_file
创建此索引文件后,您可以要求locate命令显式使用此索引:
locate -d index_file file_name
定位比查找命令更好吗?
如果你想在变化不大的目录结构中搜索文件,locate命令是一个不错的选择。它也超级快。
但 find 命令为您提供了很多选项,尤其是执行复杂的搜索选项。
这两个命令都有其用法。在我看来,如果您感到懒惰并想要快速获得结果,请使用locate。如果结果不符合您的要求,请切换到 find 命令。
你怎么认为?