让我们看一下这些命令:
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 中寻找东西的介绍:)