

Linux系列之查找命令 - chuckQu
source link: https://www.cnblogs.com/chuckQu/p/16444780.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Linux 有四个常用的查找命令: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中找到一个二进制文件。如果它在当前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
是你要寻找的东西的名字,结果将完全匹配。
搜索每一个目录,并从顶部开始查找,需要花费一定的时间。我们可以通过指定目录来加快速度。假设我知道该文件位于home
目录下:
time find /home -type f -name test.txt
这里我使用了time
命令,因此可以看到每个命令花费了多少时间。
find
命令只显示精确的名称匹配。如果file.txt
有不同的扩展名,它将不会被返回。我创建了另外一个文件text.conf
,现在如果我只用test.txt
作为名称进行搜索,我不再得到test.conf
文件的返回。
我们可以通过使用通配符(wildcards
)来解决这一限制。它们可以让我们匹配多个字符,并有几种不同的形式。
假设我们有一个包含cat、hat、what和bat文件的目录:
*
匹配多个字符。*at
将会匹配:cat、hat、what、和 bat。?
匹配单个字符。?at
将会匹配:cat、hat、bat,但不匹配what。[]
匹配出现在方括号内的字符。[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的所有目录。
- 在
~
目录(home)中进行查找。 \( -type f -not -perm 0600)
反斜线是对小括号的转义,我们在这里使用小括号将测试和操作符组合在一起,形成一个更大的表达式。默认情况下,find
是从左到右进行评估的。-not
告诉我们,如果结果是假的,该测试就是匹配的。-not
可以用!
来缩写。所以这部分也可以是`( -type f ! -perm 0600)` 。-or
告诉我们如果任何一个测试为真,那就匹配。可以简写为-o
。\( -type d -not perm 0700 \)
是另一个测试,和第一个测试非常相似,除了该类型为目录。
find
是一个拥有很多测试强大的命令,请务必多加研究。
以上就是关于在Linux中查找东西的介绍 ?
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK