Linux 中 which、whereis、locate、find的区别

Linux 中 which、whereis、locate、find的区别

which

which [-a] cmdname1 cmdname2 …

作用:从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径。

原理:执行which命令时,which会在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项,返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。

适用场合:一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。
在这里插入图片描述

whereis

whereis [-bmsu] filename1 filename2 …

作用:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

原理:whereis命令首先会去掉filename中的前缀空格和以.开头的任何字符,然后再在数据库(var/lib/slocate/slocate.db)中查找与上述处理后的filename相匹配的二进制文件、源文件和帮助手册文件,使用之前可以使用updatedb命令手动更新数据库。

适用场合:二进制文件、源文件和帮助手册文件路径的查找。
在这里插入图片描述

locate

locate [option] filename1 filename2 …

作用:find files by name from one or more databases prepared by updatedb. 同whereis指令一样,也是从数据库建立的索引中查找,不同的是该命令查找所有部分匹配的文件,使用之前可以使用updatedb命令手动更新数据库。

原理:默认情况下(当filename中不包含通配符*),locate会给出所有与filename相匹配的文件的路径。

适用场合:没有文件类型性质的模糊查找(你只记得某个文件的部分名称)。
在这里插入图片描述

find

find [option] [path1 path2 …] [filename]

参数说明

  • 时间查找参数:
    • -atime n: 将n*24小时内access过的文件列出来
    • -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的文件(可以使用通配符)

作用:从当前目录递归的搜索文件。

原理:遍历当前工作目录及其子目录,find命令是在硬盘上遍历查找,非常耗硬盘资源,查找效率相比whereis和locate较低。

适用场合:能用which、whereis和locate的时候尽量不要用find。
在这里插入图片描述

总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值