相信很多接触过Linux的朋友都知道Linux下有which、whereis、locate、find这四个查找命令,但具体这四个查找命令的优缺点可能就不太清楚了。为此在本文中课课家笔者就为大家简单介绍下这四个查找命令的优缺点供大家参考参考,让大家更加准确的使用这四个查找命令。
一般来说要想在Linux下查找文件我们都会通过以下四个查找命令来进行查找的工作:
● which 表示查看可执行文件的位置。
● whereis 表示查看文件的位置。
● locate 表示配合数据库查看文件位置。
● find 表示实际搜寻硬盘查询文件名称。
虽然说我们都了解了其基本用途,但具体的优缺点我们还是不太清楚。为此在下文中笔者就为大家一一道出四者的优缺点。
①which
语法:which可执行文件名称
下面是具体的例子:
[root@redhat~]#which passwd
/usr/bin/passwd
which是通过PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件。
②whereis
语法:whereis[-bmsu]文件或者目录名称
参数说明:
-b: 表示只找二进制文件。
-m: 表示只找在说明文件manual路径下的文件。
-s: 表示只找source源文件。
-u: 表示没有说明文档的文件。
下面是具体的例子:
[root@redhat~]#whereis passwd
passwd:/usr/bin/passwd/etc/passwd/usr/bin/X11/passwd/usr/share/man/man5/passwd.5.gz/usr/share/man/man1/passwd.1.gz/usr/share/man/man1/passwd.1ssl.gz
表示将和passwd文件相关的文件都查找出来。
[root@redhat~]#whereis-b passwd
passwd:/usr/bin/passwd/etc/passwd/usr/bin/X11/passwd
表示只将二进制文件查找出来。
与find相比whereis查找的速度更快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中。当使用whereis和locate时会从数据库中查找数据,而不是像find命令那样通过遍历硬盘来查找,效率自然也就会很高了。但是需要我们注意的一点是,这个数据库文件并不是实时更新的,在默认情况下它是一星期才更新一次,所以当我们在用whereis和locate查找文件时有时会找到已经被删除的数据或者是刚刚建立的文件却无法查找到,其原因就是因为数据库文件没有被更新的缘故。
③locate
语法:locate文件或者目录名称
和whereis一样locate也是从数据库来查找数据的,下面是具体的例子:
[root@redhat~]#locate passwd
/etc/passwd
/etc/passwd-
/etc/cron.daily/passwd
/etc/init/passwd.conf
/etc/init.d/passwd
/etc/pam.d/chpasswd
/etc/pam.d/passwd
/etc/security/opasswd
…………
④find
语法:find路径参数
参数说明:
● 时间查找参数
-atime n: 表示将n*24小时内存取过的的文件列出来。
-ctime n: 表示将n*24小时内改变、新增的文件或者目录列出来。
-mtime n: 表示将n*24小时内修改过的文件或者目录列出来。
-newer file: 表示把比file还要新的文件列出来。
● 名称查找参数
-gid n: 表示寻找群组ID为n的文件。
-group name: 表示寻找群组名称为name的文件。
-uid n: 表示寻找拥有者ID为n的文件。
-user name: 表示寻找用户者名称为name的文件。
-name file: 表示寻找文件名为file的文件(可以使用通配符)。
下面是具体的例子:
[root@redhat~]#find/-name zgz
/home/zgz
/home/zgz/zgz
/home/weblogic/bea/user_projects/domains/zgz
/home/Oracle/product/10g/cfgtoollogs/dbca/zgz
/home/oracle/product/10g/cfgtoollogs/emca/zgz
/home/oracle/oradata/zgz
[root@redhat~]#find/-name'*zgz*'
/home/zgz
/home/zgz/zgz1
/home/zgz/zgzdirzgz
/home/zgz/zgz
/home/zgz/zgzdir
/home/weblogic/bea/user_projects/domains/zgz
/home/weblogic/bea/user_projects/domains/zgz/zgz.log00006
/home/weblogic/bea/user_projects/domains/zgz/zgz.log00002
/home/weblogic/bea/user_projects/domains/zgz/zgz.log00004
/home/weblogic/bea/user_projects/domains/zgz/zgz.log
/home/weblogic/bea/user_projects/domains/zgz/zgz.log00008
/home/weblogic/bea/user_projects/domains/zgz/zgz.log00005
当我们使用whereis和locate无法查找到我们需要的文件时,我们可以使用find来查找文件数据。但是我们要注意的一点是,由于find是通过在硬盘上遍历查找,所以非常消耗硬盘的资源且效率低,因此笔者在这里建议大家如果不是万不得已的情况下大家还是优先使用whereis和locate来查找文件数据吧。
介绍完四种查找命令,那么下面笔者给大家进行一下最后的概括总结:
● which只能查可执行文件和别名(alias)并且在PATH变量里面寻找。
● whereis只能查二进制文件(含可执行文件)、说明文档,源文件等。由于它是从linux文件数据库(/var/lib/slocate/slocate.db或/var/lib/mlocate/mlocate.db)寻找,所以有可能找到刚刚删除或者没有发现新建的文件。
● locate在数据库里查找。数据库大至每天更新一次,其文件名是部分匹配。
● find根据条件在硬盘上查找文件,虽然说什么都能查但是效率比较低。
以上就是Linux四个查找命令的优缺点介绍。
本次的Linux四个查找命令的优缺点的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习Linux和Linux认证能够起到一定的帮助作用!
¥399.00
¥399.00
¥699.00
¥299.00