让我们看一下这些命令:

locate
whereis
which
find

locate 命令_

该命令将遍历您的整个文件系统并找到该关键字的每一次出现,因此您可以想象结果可能是压倒性的。

locate keyword

locate 使用通常每天更新一次的数据库,因此如果您正在搜索最近创建的内容,它可能不会在您的搜索中返回。您可以使用

updatedb

命令手动更新locate 命令的数据库。

locate aircrack-ng

whereis 命令_

在 Linux 中,可执行文件称为二进制文件,如果要定位二进制文​​件,whereis locate.

whereis binary

此命令将返回二进制文件位置、其源代码和手册页(如果可用)

whereis aircrack-ng

which 命令_

Linux 中的PATH 变量保存操作系统在其中查找您在命令行中执行的命令的目录。

which binary

which 命令在您的PATH. 如果在 current 中找不到二进制文件,则不PATH返回任何内容。

which aircrack-ng

这些目录通常包括/usr/bin但可能包括/usr/sbin和其他一些目录。

find 命令_

最强大的搜索命令是find 命令。您可以使用它在任何指定的目录中搜索并使用各种参数。

基本语法是:

find directory options expression

假设我有一个名为的文件test.txt,我需要找到它,但不确定它的确切目录。我可以执行以下命令从文件系统顶部开始搜索 /

find / -type f -name test.txt
  • /表示从文件系统的顶部
  • -type就是你要找的,f意思是文件,b意思是块特殊设备文件,c字符特殊设备文件,d目录,l符号链接。
  • -name是您要查找的名称,结果将完全匹配。

从顶部开始查找每个目录的搜索可能需要一段时间。我们可以通过提供一个目录来加快速度,假设我知道这个文件在主目录中。

time find /home -type f -name test.txt

我在time这里使用了命令,所以我们可以看到每个命令花费了多长时间。

find命令仅显示完全匹配的名称。如果file.txt有不同的扩展名,则不会被退回。我创建了另一个文件test.conf ,现在如果我find只使用test.txt作为名称进行搜索,我不再得到test.conf返回的文件。

我们可以使用wildcards它们让我们匹配多个字符并有几种不同的形式:

假设我们有一个目录,其中包含文件 cat、hat、what 和 bat

  • *匹配多个字符*at将匹配:cat、hat、what 和 bat。
  • ?匹配单个字符?at将匹配 cat、hat、bat 但不匹配什么。
  • []匹配出现在方括号内的字符[c,b]将匹配 cat 和 bat
find /home -type f -name test.*

find支持大量测试甚至操作符,假设我们要查找所有权限不是 0600 的文件和不是 0700 的目录。

find ~ \( -type f -not -perm 0600 \) -or \( -type d -not perm 0700 \)

该命令说:查找权限不是 0600 的所有文件或权限不是 0700 的所有目录。

  • find ~查看~目录(主目录)。
  • \( -type f -not -perm 0600)斜线是对括号的转义,我们在这里使用括号将测试和运算符组合在一起,形成一个更大的表达式。默认情况下,find从左到右计算。如果结果为假,-not则告诉我们此测试是匹配的。-not可以缩写为an,!所以这部分也\( -type f ! -perm 0600)可以
  • -or这告诉我们,如果任一测试为真,则它是匹配的。可以简写为-o
  • \( -type d -not perm 0700 \)另一个测试,与第一个非常相似,只是这里的类型是目录。

find是一个具有许多测试的强大命令,请确保对其进行更多研究。

这就是这个在 Linux 中寻找东西的介绍:)

在 Linux 中查找东西locate, whereis, which 和 find 命令的介绍