Linux 基础 - 指令与档案的搜索(which/whereis/locate/updatedb/find)
which(寻找「可执行文件」)
1 | $ which [-a] command |
-a
: 将所有定义在$PATH
中与该指令相关的路径都列出来。
例如:
1 | $ which ifconfig |
这里涉及到了命令别名
which
预设是搜索 PATH
内定义的目录,有些 bash
内建的指令并没有在 PATH
中定义,所以有可能找不到,例如 history
指令。
whereis
whereis
仅针对特定目录进行查找,所以速度会比 find
指令快,想知道哪些目录,执行 whereis -l
即可。
1 | $ whereis [-bmsu] 档案名或目录名 |
-l
: 列出whereis
查询的主要目录-b
: 只找binary
类型的文件-m
: 只找在说明档manual
路径下的档案-s
: 只招source
来源档案-u
: 搜寻不在上述三个项目中的其他特殊档案
举例:
1 | $ whereis ifconfig |
locate / updatedb
locate 在「已经建立的资料库(/var/lib/mlocate/
)」中搜索,因此速度很快,但不同的 Linux 发行版建立资料库的预设周期都不同(CentOS 7.x 是每天更新一次),如果在资料库新建之前使用该命令,有可能找不到目标资料,这时可执行 updatedb
手动更新资料库,updatedb
指令首先读取 /etc/updatedb.conf
配置文件,再去硬盘里搜索档案名,最后更新整个资料库档案,由于要进行硬盘操作,整个过程可能会比较慢。
1 | $ locate [-ir] 关键字 |
-i
: 忽略大小写-c
: 不输出档案名称,仅计算找到的档案数量-l
: 输出行数,如输出 5 行则是-l 5
-S
: 输出locate
所使用的资料库档案的相关咨询,包括该资料库记录的档案/目录数量等-r
: 后接正则表达式
find
1 | $ find [PATH] [option] [action] |
更多参数参考 http://linux.vbird.org/linux_basic/0220filemanager.php。