请选择 进入手机版 | 继续访问电脑版

[LINUX] Linux下which、whereis、locate、find 区别

[复制链接]
查看131 | 回复32 | 2021-9-5 01:00:19 | 显示全部楼层 |阅读模式

我们常常 在Linux要查找某个文件或下令 ,但不知道放在那里 了,可以利用 下面的一些下令 来搜索 。

which      查看可实验 文件的位置
whereis    查看文件的位置
locate     共同 数据库查看文件位置
find       现实 征采 硬盘问 询文件名称

1、which

语法: which 可实验 文件名称
比方 :
[root@redhat ~]# which passwd
/usr/bin/passwd
which是通过 PATH 环境变量到该路径内查找可实验 文件,以是 基本的功能是探求 可实验 文件

2、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 查找文件时,偶然 会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,缘故原由 就是由于 数据库文件没有被更新。

3、 locate

语法: locate 文件或者目次 名称
例 如:

  1. [root@redhat ~]# locate passwd
  2. /etc/passwd
  3. /etc/passwd-
  4. /etc/cron.daily/passwd
  5. /etc/init/passwd.conf
  6. /etc/init.d/passwd
  7. /etc/pam.d/chpasswd
  8. /etc/pam.d/passwd
  9. /etc/security/opasswd
  10. …………
复制代码


4、 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的文件(可以利用 通配符)
比方 :

  1. [root@redhat ~]# find / -name zgz
  2. /home/zgz
  3. /home/zgz/zgz
  4. /home/weblogic/bea/user_projects/domains/zgz
  5. /home/Oracle/product/10g/cfgtoollogs/dbca/zgz
  6. /home/oracle/product/10g/cfgtoollogs/emca/zgz
  7. /home/oracle/oradata/zgz
复制代码
  1. [root@redhat ~]# find / -name '*zgz*'
  2. /home/zgz
  3. /home/zgz/zgz1
  4. /home/zgz/zgzdirzgz
  5. /home/zgz/zgz
  6. /home/zgz/zgzdir
  7. /home/weblogic/bea/user_projects/domains/zgz
  8. /home/weblogic/bea/user_projects/domains/zgz/zgz.log00006
  9. /home/weblogic/bea/user_projects/domains/zgz/zgz.log00002
  10. /home/weblogic/bea/user_projects/domains/zgz/zgz.log00004
  11. /home/weblogic/bea/user_projects/domains/zgz/zgz.log
  12. /home/weblogic/bea/user_projects/domains/zgz/zgz.log00008
  13. /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    在数据库里查找,数据库大至每天 更新一次,文件名是部分匹配(见 3 locate passwd 的效果 :opasswd)
find      最强盛 ,什么都能查,根据条件查找文件,在硬盘上查找,服从 很低


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 是哒hhh | 2021-9-17 17:10:54 | 显示全部楼层
很有看点!
回复

使用道具 举报

avatar 珍惜637 | 2021-9-19 02:42:11 | 显示全部楼层
不错的帖子,值得收藏!
回复

使用道具 举报

avatar ssffgsa | 2021-9-19 19:16:27 | 显示全部楼层
有节操!
回复

使用道具 举报

avatar 小雨敲窗y | 2021-9-20 08:57:55 | 显示全部楼层
顶一下,收藏了!
回复

使用道具 举报

avatar 唰唰冷呵映 | 2021-9-20 21:58:13 | 显示全部楼层
今天皮痒了?
回复

使用道具 举报

avatar wb47 | 2021-9-26 20:13:44 | 显示全部楼层
在这个版块混了这么久了,第一次看见这么给你的帖子!
回复

使用道具 举报

avatar 肥皂沫沫盘 | 2021-9-27 18:18:58 | 显示全部楼层
楼上的刚出院吧?
回复

使用道具 举报

avatar 一叶知秋117 | 2021-9-27 18:19:01 | 显示全部楼层
今天过得很不爽!
回复

使用道具 举报

avatar 您脱风云错 | 2021-10-7 06:54:49 | 显示全部楼层
admin楼主发几张靓照啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则