linux shell之查找命令(find、locate、whereis、which和type)

发布时间:2019-11-11编辑:脚本学堂
本文介绍了linux中几个查找命令的用法,它们分别是find、locate、whereis、which和type,有需要的朋友参考下。

linux提供了5种查找文件的命令:find、locate、whereis、which和type。其中,find最强大,之前介绍过了,请参考文章:linux shellfind命令用法,接下来介绍其余4个命令。

一、locate
locate命令其实是find -name的另一种写法,但要比后者快得多,因为其不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中存有本地所有文件的信息。Linux系统自动创建这个数据库,并且默认通过cron(/etc/crontab)调用updatedb程序来每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
为了避免这种情况,可以在使用locate之前,先调用updatedb命令手动更新下数据库。locate命令的可选项如下:
 

-u:建立数据库,由根目录开始。
-U:建立数据库,可以指定开始的位置。
-e:将排除在寻找的范围之外。
-f:将特定的档案系统排出在外。
-q:安静模式,不显示任何错误信息。
-n:至多显示n个输出。
-r:使用正则表达式做寻找条件。
-o:指定数据库存储的名字。
-d:指定数据库路径。
-h:显示帮助信息。
-v:显示更多信息。
-V:显示程序的版本信息。


locate命令使用举例:
 

$locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$locate ~/m
搜索用户主目录下所有以m开头的文件。

二、whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件、man说明文件和源代码文件,其可选参数如下:
 

-b:只查找二进制文件。
-B:只在指定的目录下查找二进制文件。
-f:不显示文件名前的路径名称。
-m:只查找man说明文件。
-M:只在指定的目录下查找man说明文件。
-s:只查找源代码文件。
-S:只在指定的目录下查找源代码文件。
-u:查找不包含指定类型的文件。
如果省略选项参数,则返回所有信息。
 

whereis命令使用举例:
 

复制代码 代码示例:
$whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz
$whereis -b grep
grep: /bin/grep

三、which
which命令的作用是在PATH变量指定的路径中搜索某个系统命令的为止,并且返回第一个搜索结果,即使用which命令就可以查看某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令用法:
 

复制代码 代码示例:
$which grep
/bin/grep

四、type
type命令其实不是查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果是外部命令,那么使用-p参数会显示该命令的路径,相当于which命令。
type命令使用举例:
 

复制代码 代码示例:
$type cd
cd is a shell builtin
$type grep
grep is /bin/grep
$type -p grep
/bin/grep