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。