ocate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件
可以通过手动更新数据库来解决这个问题
updatedb
locate命令的选项如下
-d<目录>或--database=<目录>:指定数据库所在的目录;
-u:更新slocate数据库;
--help:显示帮助;
--version:显示版本信息。
通过几个例子熟悉命令
搜索etc目录下所有以sh开头的文件:
locate /etc/sh
搜索用户主目录下,所有以m开头的文件,并且忽略大小写:
locate -i ~/m
whereis 定位路径
whereis(选项)(参数)
whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径
选项如下
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
和find命令相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高
下面我们来实战这个命令
[root@localhost ~]# whereis tomcat
tomcat:
[root@localhost ~]# whereis svn
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz
开始的时候我们查找tomcat,因为我没有安装,所以在这里并没有显示
而svn我安装了,所以找到了很多相关的文件
当然我们可以只将二进制文件显示出来
[root@localhost ~]# whereis -b svn
svn: /usr/bin/svn /usr/local/svn
[root@localhost ~]# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz
[root@localhost ~]# whereis -s svn
svn:
其他选项还是不一一进行演示了,Linux本就是要实战才能真正学会
which 查找命令的绝对路径
which(选项)(参数)