Linux locate查找文件

在Linux上工作时,最常见的操作之一是搜索文件和目录。在Linux系统上,有几个命令find和locate可以让您搜索使用最常用的文件

5 min read
By myfreax
Linux locate查找文件

在Linux上工作时,最常见的操作之一是搜索文件和目录。在Linux系统上,有几个命令findlocate可以让您搜索使用最常用的文件。

locate命令是按文件和目录名称进行搜索的最快,最简单的方法。在本教程中,我们将解释如何使用locate命令。

根据发行版和系统的配置方式,locate命令可能没有预装在Linux系统上。要检查系统上是否安装了locate命令。

请打开终端,输入locate,然后按Enter。如果安装了locate软件,系统将显示locate: no pattern to search for specified,否则您将看到类似的信息locate command not found

如果locate未安装,则可以使用发行版的软件包管理器apt或者是yum轻松安装它。

如果你使用的是基于Debian的发行版。例如Ubuntu和Linux mint。你可以运行命令sudo apt update && sudo apt install mlocate安装locate命令。

如果你使用的是基于Redhat的发行版。例如CentOS和Fedora。你可以运行命令sudo yum install mlocate安装locate命令。

locate工作方式

locateupdatedb命令生成的数据库记录中搜索指定的模式。找到的结果显示在屏幕上,每行显示一个。

在安装mlocate软件包时,将创建一个cron作业,该作业updatedb每24小时运行一次命令。这样可以确保数据库得到定期更新。

有关cron作业的更多信息,请查看/etc/cron.daily/mlocate文件。你也可以通过以root或具有sudo权限的用户运行sudo updatedb命令来手动更新数据库记录。

更新过程将花费一些时间,具体取决于文件和目录的数量以及系统的速度。数据库更新后新创建的文件将不会显示在查找结果中。

与功能更强大的find命令搜索相比,locate运行速度更快,但缺少许多功能,并且只能按文件名进行搜索。

使用locate命令

locate命令的语法的基本形式是locate [OPTION] PATTERN...。当不带任何选项使用时,locate命令将打印与搜索模式匹配,且用户具有读取权限的所有文件和目录的绝对路径。

例如,要搜索名为.bashrc您的文件。输出将包括所有名称中包含字符串的所有文件.bashrc的名称。

locate .bashrc

/root/.bashrc文件将不会显示,因为我们以没有/root目录访问权限的普通用户运行locate命令。

如果结果列表很长,为了提高可读性,可以将输出传递给less命令

locate .bashrc | less

locate命令还接受包含通配符模式*。当模式不包含通配符时,locate命令将搜索*PATTERN*模式。

这就是为什么在上一个示例中显示了所有包含.bashrc名称的文件与目录。locate将会搜索的模式*.bashrc*

通配符是用于表示零个,一个或多个字符的符号。例如,要搜索系统上的所有.md文件,可以运行命令locate *.md

如果需要限制搜索结果数量,可以使用locate-n选项,后跟要显示的结果数。例如命令locate -n 10 *.py将搜索所有.py文件并仅显示10个结果。

默认情况下,locate执行区分大小写的搜索。可以使用-i/--ignore-case选项忽略大小写和,运行不区分大小写的搜索。

要统计显示所有匹配条目总数,请使用-c/--count选项。locate -c .bashrc命令将返回.bashrc名称中包含的所有文件的数量。

默认情况下,locate不检查搜索结果中的文件在系统上是否仍然存在。如果您在更新数据库后删除了文件,并且该文件与搜索模式匹配,则它将包含在搜索结果中。

要在运行locate命令时检查文件是否存在,请使用-e/--existing选项。例如命令locate -e *.json将仅返回没有被删除的.json文件。

如果您需要运行更复杂的搜索,可以使用-r/--regexp选项,该选项允许您使用基本的正则表达式而不是模式进行搜索。


例如命令locate --regex -i "(.mp4|.avi)"将会搜索.mp4.avi文件并忽略大小写在。

结论

locate命令在文件系统中搜索名称与给定模式匹配的文件和目录。该命令语法易于记忆,并且结果几乎立即显示出来。

有关终端中locate命令类型的所有可用选项的更多信息man locate。如有任何疑问,请随时发表评论。