如何使用所有Linux的搜索命令

充分Linux终端的概念在膝上型计算机的文本

Linux提供了六种不同的搜索方式,每种方式都有其优点。我们将演示怎样使用 定位哪一个哪里什么是,和 恰好的。每个人都擅长不同的任务;这是怎样为工作选择合适的工具。

在Linux中搜索和查找命令时,您会被选中。为什么这么多?嗯,他们每个人都有自己的专长,在某些情况下比其他人表现更好。您可以将它们视为一种瑞士军刀搜索。我们将依次查看每个刀片并找出其特殊优势。

find命令

的行为 命令很难通过反复试验来确定。一旦理解了语法,就会开始欣赏它的灵活性和强大功能。

最简单的使用方法 就是打字 并按Enter键。

在终端窗口中查找命令

以这种方式使用 表现得像 LS,但它列出了当前目录中的所有文件以及子目录中的所有文件。

在终端窗口中从find命令输出

一些实现 要求你把它 对于当前目录。如果您的Linux版本是这种情况,请使用以下命令:

找 。

找 。命令在终端窗口中

具有 从根文件夹中搜索您将使用此命令:

找 /

fin终端窗口中的命令/命令

要从主文件夹开始搜索,请使用以下命令:

找到〜

在终端窗口找到〜

使用查找文件模式

对于 不仅仅是一个自动递归版本的东西 LS,我们必须提供一些东西来搜索。我们可以提供文件名或文件模式。模式利用通配符在哪里 * 表示任何字符串和 是指任何单个字符。

必须引用模式才能正常工作。很容易忘记这样做,但如果你不引用通配符模式 将无法正确执行您给出的命令。

使用此命令,我们将在当前文件夹中搜索与模式“*。* s”匹配的文件。这意味着任何文件扩展名以“s”结尾的文件名。我们用的是 -名称 告诉你的选择 我们要么传递文件名,要么传递文件名模式。

找 。 -name“*。* s”

找 。 -name“*。* s”在终端窗口中

返回这些匹配的文件。

请注意,其中两个文件扩展名是两个字符长,一个是三个字符长。这是因为我们使用了模式“*。* s”。如果我们只想要两个字符文件扩展名,我们就会使用“*。?s”。

在终端窗口中输出文件命令

如果我们事先知道我们正在寻找JavaScript“.js”文件,那么我们可以在文件模式中更具体。另请注意,如果您愿意,可以使用单引号来包装模式。

找 。 -name'* .js'

找 。 -name“* .js”在终端窗口中

这次 仅报告JavaScript文件。

find在终端窗口中找到的JavaScript文件

用查找忽略大小写

如果您知道所需文件的名称 找到,你可以传递给 而不是模式。如果文件名中没有通配符,则无需将文件名包装在引号中,但最好始终执行此操作。这样做意味着您在需要时不会忘记使用它们。

找 。 -name'Yelp.js'

找 。 -name在终端窗口中显示“Yelp.js”

这没有回报任何东西。但奇怪的是,我们知道文件必须存在。让我们再试一次然后说出来 忽略大小写。我们通过使用 -我的名字 选项(忽略案例名称)

找。 – 'yelp.js'

找。 -iname在终端窗口中显示'Yelp.js'

这就是问题,文件名以小写“y”开头,我们用大写的“Y”搜索。

使用find递归子目录

一件好事 是递归搜索子目录的方式。让我们搜索以“map”开头的所有文件。

找 。 -name“map *。*”

找 。 -name“map *。*”在终端窗口中

列出匹配的文件。请注意,它们都在子目录中。

来自终端窗口中的子目录的结果

使用find搜索目录

-路径 选项使 寻找目录。让我们找一个我们不太记得名字的目录,但我们知道它以字母“about”结尾。

找 。 -path'* about'

找 。 -path'* about'在终端窗口中

找到该目录,它只是名为“about”,它嵌套在当前目录中的另一个目录中。

在终端窗口中找到目录

有一个 -ipath (忽略大小写路径)选项,允许您搜索路径并忽略大小写,类似于 –我的名字 上面讨论的选项。

使用带有find的文件属性

可以查找具有与搜索线索匹配的属性的文件。例如,您可以使用。查找空的文件 -empty 选项,无论他们叫什么。

找 。 -empty

找 。 - 在终端窗口空

任何零字节长度的文件都将列在搜索结果中。

如何使用所有Linux的搜索命令 1

-executable 选项将找到任何可以执行的文件,例如程序或脚本。

找 。 -executable

找 。 - 在终端窗口中可执行

结果列出了一个名为“fix_aptget.sh”的文件。

它们还包含三个目录,包括“。”,即当前目录。这些目录包含在结果中,因为执行位在其文件权限中设置。如果没有这个,你将无法改变(“运行”)这些目录。

可执行文件搜索结果na终端窗口

-type选项

-类型 选项允许您搜索要查找的对象类型。我们将提供类型指示符“f”作为参数 -类型 选项,因为我们想要 仅搜索文件。

找 。 executable -type f

找 。终端窗口中的executable -type f

这次没有列出子目录。可执行脚本文件是结果中的唯一项目。

搜索结果,终端窗口中没有目录

我们也可以问 仅包含结果中的目录。要列出所有目录,我们可以使用 -类型 类型指示符“d”的选项。

找 。键入-d

找 。在终端窗口中键入-d

结果中仅列出目录和子目录。

终端窗口中列出的目录

使用其他命令与find

您可以对找到的文件执行一些其他操作。您可以将文件依次传递给其他命令。

如果我们需要确保当前目录和子目录中没有可执行文件,我们可以使用以下命令:

找 。 -name“fix_aptget.sh” – exec chmod -x'';

找 。 -name“fix_aptget.sh” -  exec chmod -x'';在终端窗口

该命令意味着:

  • 在当前目录中搜索名为“fix_aptget.sh”的命名对象。
  • 如果找到则执行 CHMOD 命令。
  • 传递给的参数 CHMOD-X 删除可执行权限和 '' 表示找到的文件的文件名。
  • 最后一个分号标记将要传递给的参数的结尾 CHMOD。这必须通过在前面添加''反斜杠来“转义”。

运行此命令后,我们可以像以前一样搜索可执行文件,这次不会列出任何文件。

在终端窗口中没有可执行文件的搜索结果

为了使我们的网络更广泛,我们可以使用文件模式而不是我们在示例中使用的文件名。

这种灵活性允许您搜索指定的文件类型或文件名模式,并对匹配的文件执行某些操作。

Find有许多其他选项,包括按修改日期搜索文件,用户或组拥有的文件,可读文件或具有特定文件权限集的文件。

locate和mlocate命令

许多Linux发行版过去都有副本 定位 包括在内。这被取代了 的mlocate 命令,这是一个改进和更新的版本 定位

什么时候 的mlocate 安装在它修改的系统上 定位 命令,以便您实际使用 的mlocate 即使你输入 定位

检查当前版本的Ubuntu,Fedora和Manjaro,看看他们是否预先安装了这些命令的版本。 Ubuntu和Fedora都包括在内 的mlocate。 它必须安装在Manjaro上,使用以下命令:

sudo pacman -Syu mlocate
sudo pacman -Syu mlocate在一个终端窗口

在Ubuntu上,您可以使用locate和 的mlocate 互换。在Fedora和Manjaro你必须输入 定位 ,但命令是由你执行的 的mlocate

如果你使用 - 版 选项 定位 你会看到响应的命令实际上是 的mlocate

定位–version

在终端窗口中定位--version

因为 定位 适用于我们将使用的所有经过测试的Linux发行版 定位 在我们的解释如下。而且它的字母数量少了一个。

定位数据库

最大的优势 定位 有速度。

当你使用 命令,它破灭并在您的文件系统中执行搜索。该 定位 命令工作方式非常不同它执行数据库查找以确定您要查找的是否在您的计算机上。这使得搜索速度更快。

当然,它确实引发了关于数据库的明显问题。什么确保数据库是最新的?什么时候 的mlocate 安装它(通常)放入一个条目 cron.daily。这运行每天(非常早)并更新数据库。

要检查此条目是否存在,请使用以下命令:

ls /etc/cron.daily/*loc*

ls /etc/cron.daily/*loc*在终端窗口中

如果您在那里找不到条目,​​则可以设置一个自动化任务,以便在您选择时为您执行此操作。

有关: 怎样在Linux上安排任务:Crontab文件简介

如果您的计算机在数据库应该更新时没有打开怎么办?您可以使用以下命令手动运行数据库更新过程:

sudo updatedb

sudo在终端窗口中更新了

使用定位

让我们查找包含字符串“getlatlong”的文件。使用locate,搜索会自动在文件名中的任何位置查找包含搜索词的任何匹配项,因此无需使用通配符。

找到getlatlong
在终端窗口找到getlatlong

在屏幕截图中很难传达速度,但几乎立即为我们列出了匹配的文件。

在终端窗口中找到包含getlatlong的文件的结果

告诉定位你想要多少结果

有时你可能知道你搜索的类型有很多文件。你只需要看看前几个。也许您只想提醒他们所在的目录,而您不需要查看所有文件名。

使用 -n (数字)选项可以限制结果的数量 定位 会回到你的身边。在此命令中,我们设置了10个结果的限制。

找到.html -n 10

在终端窗口中找到.html -n 10

定位 通过列出它从数据库中检索的前10个匹配文件名来响应。

搜索结果位于限制为10的结果终端窗口中

计算匹配的文件

如果您只想知道匹配文件的数量,并且您不需要知道它们的名称或它们在硬盘驱动器上的位置,请使用-c(计数)选项。

找到-c .html

在终端窗口中找到-c .html

所以,现在我们知道这台计算机上有431个带有“.html”扩展名的文件。也许我们确实想看看它们,但我们认为我们先看一看,先看看有多少。有了这些知识,我们知道我们需要管理输出

找到.html |减

找到.html |少在终端窗口

在这里,他们都是,或者至少,这里是他们的长名单中的首位。

html文件列表在终端窗口中通过较少的管道传输

使用locate忽略大小写

-一世 (忽略大小写)原因 定位 为此,它忽略了搜索词与数据库中文件名之间的大写和小写差异。如果我们再次尝试重新计算HTML文件,但错误地以大写形式提供搜索词,我们将得到零结果。

找到-c .HTML

在终端窗口中找到-c .HTML

通过包括 -一世 我们可以做的选择 定位 忽略大小写的差异,并返回我们对这台机器的预期答案,即431。

找到-c -i .HTML

在终端窗口中找到-c -i .HTML

找到数据库状态

要查看数据库的状态,请使用 -s (状态)选项。这导致 定位 返回有关数据库大小和内容的一些统计信息。

找到-s

在终端窗口中找到-s

哪个命令

哪一个 命令搜索路径中的目录,并尝试找到要搜索的命令。它允许您确定在命令行上键入其名称时将运行的程序或命令的版本。

想象一下,我们有一个名为的程序 geoloc。我们知道它安装在计算机上,但我们不知道它的位置。它必须位于某个路径中,因为当我们键入其名称时,它会运行。我们可以用 哪一个 使用此命令找到它:

哪个地质

终端窗口中的哪个地理位置

哪一个 报告该程序位于 在/ usr / local / bin目录

/ usr / local / bin中的geoloc

我们可以使用以下方法检查路径中其他位置是否有该程序的任何其他副本 -一个 (全部)选项。

哪个 – 一个地质

哪个 - 终端窗口中的地理位置

这告诉我们,我们有 geoloc 程序在两个地方。

哪个 - 终端窗口中的地理位置

当然,副本中 在/ usr / local / bin目录 每次都会被Bash shell首先找到,所以将程序放在两个地方是毫无意义的。

删除版本 在/ usr / bin中/ geoloc 将为您节省一点硬盘容量。更重要的是,它还可以避免手动更新程序并在错误的位置执行操作所造成的问题。然后想知道为什么他们在运行程序时没有看到新的更新。

whereis命令

哪里 命令类似于 哪一个 命令,但它提供更多信息。

除了命令或程序文件的位置, 哪里 还报告人(手动)页面和源代码文件的位置。在大多数情况下,源代码文件不会在您的计算机上,但如果是, 哪里 将报告他们。

二进制可执行文件,手册页和源代码通常被称为该命令的“包”。如果你想知道包的各个组件在哪里 DIFF 命令所在,使用以下命令:

差异在哪里

在终端窗口中的diff是diff

哪里 通过列出的位置来回应 DIFF 手册页和 DIFF 二进制文件。

whereis在终端窗口中重新开始diff

要将结果限制为仅显示二进制文件的位置(实际上是make 哪里 工作就像 哪一个 ) 使用 -b (二元)选项。

whereis -b diff

whereis -b diff在终端窗口中

哪里 仅报告可执行文件的位置。

whereis输出仅限于终端窗口中的二进制位置

要限制搜索仅在手册页上报告,请使用 -m (手动)选项。要限制搜索仅报告源代码文件,请使用 -s (来源)选项。

要查看位置 哪里 搜索,使用 -l (地点)选项。

whereis -l

whereis -l在终端窗口中

这些地点是为您列出的。

whereis是在终端窗口中列出的搜索位置

现在我们知道了位置 哪里 将进行搜索,我们可以选择将搜索限制在特定位置或位置组。

-B (二进制列表)选项将搜索可执行文件限制为命令行上提供的路径列表。您必须至少提供一个位置 哪里 搜索。该 -F (file)选项用于表示文件名开头的位置结束。

whereis -B / bin / -f chmod

在终端窗口中whereis -B / bin / -f chmod

哪里 看着我们要求搜索的单个地方。这恰好是文件所在的位置。

whereis是在终端窗口中使用-B选项的结果

你也可以使用 -M (手动列表)选项,用于将手册页的搜索限制为您在命令行上提供的路径。该 -S (源列表)选项允许您以相同的方式限制对源代码文件的搜索。

什么命令

什么是 命令用于快速搜索man(手动)页面。它提供了您要求它搜索的术语的一行摘要说明。

让我们从一个简单的例子开始。虽然它看起来像深刻的哲学辩论的起点,但我们只是在问 什么是 告诉我们“男人”这个词是什么意思。

什么人

什么人在终端窗口

什么是 找到两个匹配的描述。它打印每个匹配的简短描述。它还列出了手册中包含每个完整描述的编号部分。

whatis导致终端窗口

要在描述该部分的部分打开手册 命令,使用以下命令:

男人1男人

男子1人在终端窗口

该手册在man(1)部分的页面上打开

手册页在终端窗口的第一部分打开

要在第7部分打开手册,请在讨论可用于生成手册页的宏的页面上使用此命令:

男人7男人

男子7人在终端窗口

将显示man宏的手册页。

手册页在终端窗口的第七节打开

在手册的特定部分中搜索

-s (部分)选项用于将搜索范围限制在您感兴趣的手册的各个部分 什么是 搜索仅限于本手册的第7部分,请使用以下命令。请注意部分编号周围的引号:

whatis -s“7”男人

whatis -s“7”男子在终端窗口

结果仅参考手册的第7节。

whatis结果仅限于终端窗口中的第7节

使用带有通配符的whatis

您可以使用通配符 什么是。你必须使用 -w (通配符)选项。

whatis -w char *

终端窗口中的whatis -w char *

匹配结果列在终端窗口中。

whatis通配符在终端窗口中匹配

apropos命令

恰好的 命令类似于 什么是,但它有更多的花里胡哨。它搜索手册页标题和一行描述以查找搜索词。它在终端窗口中列出匹配的手册页描述。

apropos这个词的意思是“与……有关”或“有关”,以及命令 恰好的 取而代之的是这个名字。搜索与之相关的任何内容 命令,我们可以使用这个命令:

apropos团体

终端窗口中的apropos组

恰好的 将结果列在终端窗口中。

apropos结果在终端窗口中的组

使用多个搜索词

您可以在命令行上使用多个搜索词。 恰好的 将搜索包含任一搜索词的手册页。

apropos chown chmod

apropos在终端窗口中chown chmod

结果如前所述。在这种情况下,每个搜索项都有一个条目。

apropos结果为终端窗口中的chmod和chown。

使用精确匹配

恰好的 将返回包含搜索词的手册页,即使该词位于另一个词的中间。要做 恰好的 只返回搜索词的完全匹配,请使用 -e (确切)选项。

为了说明这一点,我们将使用 恰好的grep的 作为搜索词。

apropos grep

apropos grep在终端窗口中

为此返回了许多结果,其中包括许多结果 grep的 在另一个词中加入,例如 bzfgrep

apropos grep在终端窗口中的结果

让我们再试一次,然后使用 -e (确切)选项。

apropos -e grep

apropos -e grep在终端窗口中

对于我们实际搜索的内容,这次我们只有一个结果。

apropos -e grep在终端窗口中的结果

匹配所有搜索字词

如前所述,如果您提供多个搜索词 恰好的 将搜索包含搜索词的手册页。我们可以通过使用来改变这种行为 -一个 (和)选项。这使得 恰好的 只选择包含所有搜索时间的匹配项。

让我们试试没有的命令 -一个 选项,以便我们可以看到结果 恰好的 给人。

apropos crontab cron

apropos crontab cron在终端窗口中

结果包括与搜索词中的一个或另一个匹配的手册页。

在终端窗口中显示crontab cron的结果

现在我们将使用 -一个 选项。

apropos -a crontab cron

apropos -a crontab cron在终端窗口中

这次结果缩小到包含两个搜索项的结果。

结果为apropos -a crontab cron n终端窗口

还有更多选择

所有这些命令都有更多选项 – 其中一些选项还有更多选项 – 我们鼓励您阅读我们在本文中讨论过的命令的手册页。

以下是每个命令的快速摘要:

  • find:提供功能丰富且细化的搜索功能,以查找文件和目录。

  • locate:提供快速的数据库驱动的程序和命令搜索。

  • 其中:搜索$ PATH查找可执行文件

  • whereis:搜索$ PATH,查找可执行文件,手册页和源代码文件。

  • whatis:搜索匹配搜索词的人的单行描述。

  • apropos:搜索man的页面比whatis更保真,以匹配搜索词或术语。

寻找更多Linux终端信息?这里有37个你应该知道的命令。

有关: 37个你应该知道的重要Linux命令

body #primary .entry-content ul#nextuplist list-style-type:none; margin-left:0px; padding-left:0px;
body #primary .entry-content ul#nextuplist li a text-decoration:none; color:#1d55a9;

请阅读下一步

  • >怎样加快PlayStation 4的下载速度
  • >怎样在Windows 10上禁用登录屏幕的背景模糊
  • >怎样在Windows 10上查看所有已保存的Wi-Fi密码
  • >骨传导耳机怎样工作?
  • >怎样使用Linux类型命令
本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。