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

Linux提供了六种不同的搜索方式,每种方式都有其优点。我们将演示如何使用find、locate、which、whereis、whatis和apropos。每个人擅长不同的任务;下面是如何为工作选择合适的工具。...

Linux提供了六种不同的搜索方式,每种方式都有其优点。我们将演示如何使用find、locate、which、whereis、whatis和apropos。每个人擅长不同的任务;下面是如何为工作选择合适的工具。

在Linux中搜索和查找命令的时候,你已经被宠坏了。为什么这么多?嗯,他们每个人都有自己的特长,在某些情况下表现得比其他人好。你可以把它们想象成一把瑞士**。我们将依次查看每个刀片并找出其特定的优势。

find命令

find命令的行为很难通过反复试验来确定。一旦你理解了语法,你就开始欣赏它的灵活性和威力。

使用find最简单的方法就是键入find并按enter。

find

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

以这种方式使用find的行为类似于ls,但它列出了当前目录和子目录中的所有文件。

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

Advertisement

find的一些实现要求您将。对于当前目录。如果您的Linux版本是这样,请使用以下命令:

find .

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

要从根文件夹中查找搜索,可以使用以下命令:

find /

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

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

find ~

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

对文件模式使用find

为了让find不仅仅是ls的自动递归版本,我们必须为它提供一些可以搜索的东西。我们可以提供文件名或文件模式。模式使用通配符,其中*表示任何字符串和?表示任何单个字符。

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

使用此命令,我们将在当前文件夹中搜索与模式“*.*s”匹配的文件。这表示文件扩展名以“s”结尾的任何文件名。我们使用-name选项告诉find我们要么传入文件名,要么传入文件名模式。

find . -name "*.*s"

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

find返回这些匹配的文件。

Advertisement

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

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

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

find . -name '*.js'

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

这次只查找有关JavaScript文件的报告。

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

忽略带有find的case

如果知道要查找的文件的名称,可以将其传递给find而不是pattern。如果文件名中没有通配符,则不需要将其括在引号中,但始终这样做是一种很好的做法。这样做意味着你不会忘记在你需要它们的时候使用它们。

find . -name 'Yelp.js'

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

什么也没回。但奇怪的是,我们知道那个文件一定在那里。让我们再试一次,告诉find忽略这个案例。我们通过使用-iname选项(忽略案例名称)来实现这一点

find. -iname 'Yelp.js'

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

这就是问题所在,文件名以小写字母“y”开头,我们用大写字母“y”搜索

使用find递归子目录

find的一个优点是它递归搜索子目录的方式。让我们搜索任何以“map”开头的文件

find . -name "map*.*"

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

Advertisement

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

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

使用find搜索目录

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

find . -path '*about'

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

找到该目录后,它就被称为“about”,并嵌套在当前目录中的另一个目录中。

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

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

将文件属性与查找一起使用

find可以查找具有与搜索线索匹配的属性的文件。例如,您可以使用-empty选项查找空文件,而不管它们被称为什么。

find . -empty

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

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

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

Advertisement

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

find . -executable

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

结果列出了一个名为“fix\u aptget.sh”的文件。

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

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

类型选项

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

find . executable -type f

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

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

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

我们也可以要求find只在结果中包含目录。要列出所有目录,我们可以使用-type选项和类型指示符“d”。

find . type -d

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

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

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

在find中使用其他命令

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

Advertisement

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

find . -name "fix_aptget.sh" -exec chmod -x '{}' \;

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

该命令意味着:

  • 在当前目录中搜索名为“fix\u aptget.sh”的命名对象。
  • 如果找到它,执行chmod命令。
  • 传递给chmod的参数是-x以删除可执行权限和{},后者表示找到的文件的文件名。
  • 最后一个分号表示要传递给chmod的参数的结束。必须在它前面加一个“\”反斜杠来“转义”。

一旦这个命令已经运行,我们可以像以前一样搜索可执行文件,这次将不会列出任何文件。

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

为了把我们的网撒得更广,我们可以使用一个文件模式,而不是我们在示例中使用的文件名。

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

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

locate和mlocate命令

许多Linux发行版过去都附带了locate的副本。这被mlocate命令取代,mlocate命令是locate的改进和更新版本。

Advertisement

在系统上安装mlocate时,它会修改locate命令,以便即使键入locate,也可以实际使用mlocate。

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

sudo pacman -Syu mlocate007Ys3FFgy1gsh0vd4718j60hy01l3yc02

在Ubuntu上,可以互换地使用locate和mlocate。在Fedora和Manjaro上,您必须键入locate,但该命令由mlocate为您执行。

如果将--version选项与locate一起使用,您将看到响应的命令实际上是mlocate。

locate --version

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

由于locate适用于所有经过测试的Linux发行版,因此我们将在下面的解释中使用locate。少了一个字母。

定位数据库

定位的最大优势是速度。

当您使用find命令时,它会冲出并在文件系统中执行搜索。locate命令的工作方式非常不同。它执行数据库查找以确定您要查找的内容是否在您的计算机上。这使得搜索速度大大加快。

Advertisement

当然,它确实提出了一个关于数据库的明显问题。什么确保数据库是最新的?安装mlocate后,它(通常)会在cron.daily中放置一个条目。它每天(一大早)运行并更新数据库。

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

ls /etc/cron.daily/*loc*

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

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

相关:如何在Linux上调度任务:Crontab文件简介

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

sudo updatedb

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

使用定位

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

locate getlatlong007Ys3FFgy1gsh0vi8imoj60hy01ldfp02

在屏幕截图中很难传达速度,但几乎马上就会为我们列出匹配的文件。

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

告诉我你想要多少结果

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

Advertisement

使用-n(number)选项可以限制locate返回给您的结果的数量。在这个命令中,我们设置了10个结果的限制。

locate .html -n 10

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

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

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

正在计算匹配文件

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

locate -c .html

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

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

locate .html | less

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

他们都在这里,或者至少,这是他们长长的名单中的第一个。

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

忽略带locate的大小写

i(忽略大小写)使locate只做这件事,它忽略了数据库中搜索词和文件名之间的大小写差异。如果我们再次尝试计数HTML文件,但错误地以大写形式提供搜索词,我们将得到零结果。

locate -c .HTML

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

Advertisement

通过包含-i选项,我们可以使locate忽略case中的差异,并返回这台机器的预期答案,即431。

locate -c -i .HTML

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

定位数据库状态

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

locate -s

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

which命令

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

想象一下我们有一个叫做geoloc的程序。我们知道它安装在电脑上,但不知道它在哪里。它一定在某个路径中,因为当我们键入它的名称时,它会运行。我们可以使用以下命令来定位它:

which geoloc

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

它报告程序位于/usr/local/bin中。

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

我们可以使用-a(all)选项检查路径中的其他位置是否有该程序的任何其他副本。

which -a geoloc

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

这表明我们在两个地方有geoloc程序。

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

Advertisement

当然,每次Bash shell都会首先找到/usr/local/bin中的副本,因此将程序放在两个位置是没有意义的。

删除/usr/bin/geoloc中的版本将节省一些硬盘容量。更重要的是,它还可以避免由手动更新程序和在错误的地方执行程序所产生的问题。然后想知道为什么他们在运行程序时看不到新的更新。

whereis命令

whereis命令与which命令类似,但它的信息量更大。

除了命令或程序文件的位置,whereis还报告手册页和源代码文件的位置。在大多数情况下,源代码文件不会在您的计算机上,但如果是,whereis将报告它们。

二进制可执行文件、手册页和源代码通常被称为该命令的“包”。如果要知道diff命令包的各个组件的位置,请使用以下命令:

whereis diff

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

whereis通过列出diff手册页和diff二进制文件的位置来响应。

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

Advertisement

要将结果限制为仅显示二进制文件的位置(实际上,使whereis的工作方式与whereis相同),请使用-b(二进制文件)选项。

whereis -b diff

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

whereis只报告可执行文件的位置。

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

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

要查看whereis搜索的位置,请使用-l(locati***)选项。

whereis -l

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

为您列出了位置。

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

既然我们知道了要搜索的位置,我们可以,如果我们选择的话,将搜索限制在一个特定的位置或一组位置。

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

whereis -B /bin/ -f chmod

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

Advertisement

whereis在我们要搜索的地方。这恰好是文件所在的位置。

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

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

whatis命令

whatis命令用于快速搜索手册页面。它提供了一行摘要描述的术语,你已经要求它搜索。

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

whatis man

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

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

007Ys3FFgy1gsh0wjzqmqj60hy03eq3002

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

man 1 man

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

Advertisement

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

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

要打开第7节中的手册,请在讨论可用于生成手册页的宏的页面上使用以下命令:

man 7 man

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

将为您显示man宏的手册页。

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

在手册的特定章节中搜索

-s(节)选项用于将搜索限制为您感兴趣的手册的节。要将whatis搜索限制到手册的第7节,请使用以下命令。请注意节号周围的引号:

whatis -s "7" man

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

结果仅参考手册第7节。

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

对通配符使用whatis

可以将通配符与whatis一起使用。必须使用-w(通配符)选项才能执行此操作。

whatis -w char*

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

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

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

恰当的命令

apropos命令与whatis类似,但它有更多的铃铛和口哨。它在手册页标题和单行描述中搜索搜索搜索词。它在终端窗口中列出匹配的手册页描述。

apropos这个词的意思是“相关的”或“有关的”,而命令apropos的名字来源于此。要搜索与groups命令相关的任何内容,可以使用以下命令:

apropos groups

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

apropos在终端窗口中列出结果。

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

使用多个搜索词

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

apropos chown chmod

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

结果如前所示。在本例中,每个搜索项都有一个条目。

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

使用完全匹配

ApPoPOS将返回包含搜索项的man页面,即使该术语位于另一个单词的中间。要使apropos只返回搜索词的精确匹配,请使用-e(exact)选项。

为了说明这一点,我们将使用apropos和grep作为搜索词。

apropos grep

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

为此返回了许多结果,包括grep合并到另一个词中的许多结果,例如bzfgrep。

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

Advertisement

让我们再试一次并使用-e(精确)选项。

apropos -e grep

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

我们这次有一个单一的结果,我们实际上在寻找什么。

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

匹配所有搜索词

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

让我们在不使用-a选项的情况下尝试该命令,以便查看apropos给出的结果。

apropos crontab cron

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

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

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

现在我们将使用-a选项。

apropos -a crontab cron

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

Advertisement

这一次,搜索结果被缩小到同时包含两个搜索词的搜索结果。

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

还有更多的选择

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

下面是每个命令的简要摘要:

  • 查找:提供了一个功能丰富的细粒度搜索功能来查找文件和目录。
  • 定位:提供对程序和命令的快速数据库驱动搜索。
  • 其中:搜索$路径以查找可执行文件
  • whereis:搜索$PATH以查找可执行文件、手册页和源代码文件。
  • whatis:搜索人的单行描述以查找与搜索词匹配的内容。
  • 恰当:以比whatis更逼真的方式搜索手册页,以查找与搜索项匹配的内容。

寻找更多的Linux终端信息?下面是你应该知道的37条命令。

相关:您应该知道的37条重要的Linux命令

  • 发表于 2021-07-15 02:04
  • 阅读 ( 140 )
  • 分类:互联网

你可能感兴趣的文章

40多个最常用的linux终端命令

... 在您真正充分利用终端之前,您需要知道如何导航它。这就是为什么我们认为这些是最基本的Linux命令:如果你不能更改目录或者在一个你不记得如何使用的命令上获得帮助,那么再多的终端知识也帮不了你。 ...

  • 发布于 2021-03-15 21:40
  • 阅读 ( 265 )

linux命令参考备忘单

...便的Linux命令备忘单。如果您想运行其中的几个,请查看如何在带屏幕的Linux终端上执行多任务。 ...

  • 发布于 2021-03-22 04:06
  • 阅读 ( 236 )

启动linux的9个基本命令

... 如何在linux下打开终端 ...

  • 发布于 2021-03-26 18:33
  • 阅读 ( 231 )

如何在linux中查找目录

...用许多搜索工具。我们将研究几个易于使用的选项,以及如何使用它们高效地搜索文件夹。 ...

  • 发布于 2021-03-28 04:10
  • 阅读 ( 237 )

如何在linux上使用fd命令

...覆盖默认值,但在许多情况下,它们对您有利。 相关:如何使用所有Linux的搜索命令 安装fd 由于ubuntu19.04(Disco Dingo,),您可以通过使用apt get调用官方维护的包来直接安装fd。如果您运行的是较旧版本的Ubuntu,请查看Git hub页面...

  • 发布于 2021-04-01 21:52
  • 阅读 ( 174 )

如何使用linux的man命令:隐藏的秘密和基础知识

...把它点燃看看! 相关:您应该知道的37条重要的Linux命令 如何打开手册 要使用man,请在命令行中键入man,后跟空格和Linux命令。man打开Linux手册的“手册页”,其中描述了该命令,当然,如果它能找到它的话。 让我们输入以下内...

  • 发布于 2021-04-02 10:46
  • 阅读 ( 201 )

如何在linux上使用正则表达式(regex)

...在Linux上做了什么吗?他们给你命令行魔法!我们将教你如何施展正则表达式法术并提升你的命令行技能。 什么是正则表达式(regular expressi***)? 正则表达式(regex)是一种查找匹配字符序列的方法。它们使用字母和符号来定义...

  • 发布于 2021-04-02 11:27
  • 阅读 ( 226 )

如何在linux中向$path添加目录

...但这并没有什么不好的地方。我们将解释它的作用,以及如何调整它。 什么是$path,它是如何工作的($path on linux, and how does it work)? 当您在终端窗口中键入一个命令并按Enter键时,您甚至在执行命令之前就开始了大量的活动。 B...

  • 发布于 2021-04-02 14:04
  • 阅读 ( 189 )

如何在linux上使用grep命令

...列表(不考虑年份),按文件大小的升序排列。 相关:如何在Linux上使用管道 格雷普:少了指挥权,多了一个盟友 grep是一个非常好的工具,您可以随时使用。它可以追溯到1974年,现在仍然很强大,因为我们需要它所做的,没...

  • 发布于 2021-04-02 17:23
  • 阅读 ( 171 )

如何在linux上使用history命令

...复您过去运行的命令。一旦您了解了Linux history命令以及如何使用它,它就可以显著地提高您的生产效率。 操纵历史 正如乔治桑塔亚纳(georgestantayana)的一句名言:“那些记不住过去的人注定要重蹈覆辙。”不幸的是,在Linux...

  • 发布于 2021-04-02 18:17
  • 阅读 ( 205 )
figoim486
figoim486

0 篇文章

相关推荐