Linux下which、whereis、locate、find 命令的区别

来源:互联网 发布:众途软件下载 编辑:程序博客网 时间:2024/06/14 00:40

Linux中有很多查找文件的命令,如which、whereis、locate、find,有时使用时根本分不清它们之间的区别,不太清楚,什么时候该使用什么命令,在此记录一下,各自的功能与用法。

1、which

这条命令主要用来查找系统PATH目录下的可执行文件。在此说一下

Linux系统PATH的查找命令echo $PATH

windows下的查找命令echo %PATH%

比如查找jdk中的两个可执行文件

2、whereis

这个命令可以用来查找二进制文件、man文件、源文件。与which不同的是这条命令是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广。

whereis [-bmsu] 文件名称 
参数说明: 
-b :只找二进制文件 
-m :只找在说明文件manual路径下的文件 
-s :只找source源文件 
-u :没有说明文档的文件


find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 
但是该数据库文件并不是实时更新,默认情况下一星期更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

3、locate

笔者使用的centos默认没有安装此命令,如果读者的电脑上也没有这个命令,可以参照我的这篇文章:

http://blog.csdn.net/csdn_ds/article/details/72677823

进行安装。

这个命令也是通过数据库查找文件,但是这个命令的适用范围就比whereis大多了。这个命令可以找到任意你指定要找的文件,并且可以只输入部分文件名(前面两个命令是要输入完整文件名的)。


需要注意的是locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库。

4、find

这条命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。功能强大,命令复杂,但与前面几条命令相比,效率不高。

语法规范:

find 路径 参数

平常使用比较多的参数:

-name file :寻找文件名为file的文件(可以使用通配符)


总结:

which主要用来查找可直接执行的命令,可以查找别名,查找的是系统PATH下的可执行文件。

whereis比which的搜索范围大一些,同时可以查找源文件和man文件。这两个命令适用于查找安装好的命令。

locate的查找范围更大,可以查找任意类型文件。适合快速查找指定文件。

find最强大也最慢。适合查找前几个命令找不到的文件。

阅读全文
2 0
原创粉丝点击