在Linux中找到命令

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

locate 命令是按文件和目录名称搜索的最快,最简单的方法。

在本文中,我们将说明如何使用 locate 命令。

正在安装 locate (找不到定位命令)

根据发行版和系统的配置方式,定位包可能会或可能不会预装在Linux系统上。

检查是否 locate 安装了实用程序,打开您的终端,键入 locate 然后按 Enter。 如果安装了软件包,系统将显示 locate: no pattern to search for specified。 否则,您会看到类似 locate command not found

如果 locate 未安装,您可以使用发行版的软件包管理器轻松安装。

安装 locate 在Ubuntu和Debian上

sudo apt update sudo apt install mlocate

安装 locate 在CentOS和Fedora上

sudo yum install mlocate

如何 locate 工作编号

locate 命令通过数据库生成的数据库文件搜索给定的模式 updatedb 命令。 找到的结果显示在屏幕上,每行一个。

在安装mlocate软件包的过程中,将创建一个cron作业,该作业将运行 updatedb 每24小时命令一次。 这样可以确保数据库得到定期更新。 有关cron作业的更多信息,请检查 /etc/cron.daily/mlocate 文件。

可以通过运行手动更新数据库 updatedb 以root或具有sudo特权的用户:

sudo updatedb

更新过程将花费一些时间,具体取决于文件和目录的数量以及系统的速度。

数据库更新后创建的文件将不会显示在查找结果中。

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

如何使用 locate 命令#

的语法 locate 命令如下:

locate [OPTION] PATTERN...

在最基本的形式下,如果不带任何选项使用, locate 命令将打印与搜索模式匹配并且用户具有读取权限的所有文件和目录的绝对路径。

例如搜索名为 .bashrc 您将输入:

locate .bashrc

输出将包含所有包含字符串的文件的名称 .bashrc 以他们的名字:

/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

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

如果结果列表很长,为了提高可读性,您可以将输出通过管道传递到 less 命令:

locate .bashrc | less

locate 该命令还接受包含通配符等通配符的模式 *。 当模式不包含通配符时,该命令将搜索 *PATTERN*。 因此,在上一个示例中,显示了所有名称中包含搜索模式的文件。

通配符是用于表示零个,一个或多个字符的符号。 例如,搜索所有 .md 文件在系统上,您将键入:

locate *.md

要限制搜索结果,请使用 -n 选项,然后是要显示的结果数。 以下命令将搜索所有 .py 文件,仅显示10个结果:

locate -n 10 *.py

默认, locate 执行区分大小写的搜索。 的 -i--ignore-case)选项告诉 locate 忽略大小写并运行不区分大小写的搜索。

locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md

要显示所有匹配条目的计数,请使用 -c--count) 选项。 以下命令将返回包含以下内容的所有文件的数量: .bashrc 以他们的名字:

locate -c .bashrc
6

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

仅显示当时存在的文件的名称 locate 运行,使用 -e--existing) 选项。 例如,以下将仅返回现有的 .json 文件:

locate -e *.json

如果您需要进行更复杂的搜索,请使用 -r--regexp)选项,您可以使用基本的正则表达式(而不是模式)进行搜索。 可以多次指定此选项,例如搜索所有 .mp4.avi 文件并忽略大小写,您将运行:

locate --regex -i "(.mp4|.avi)"

结论#

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

有关的所有可用选项的更多信息 locate 命令类型 man locate 在您的终端中。

如有任何疑问,请随时发表评论。

终端定位

Sidebar