Linux提供了5种查找文件的命令:find、locate、whereis、which和type。其中,find最强大,前面博文一经介绍过了,具体参见这里,接下来介绍其余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


09-28 08:51