linux which,whereis,locate,find的区别

 

find就不用多说了,就是递归遍历文件夹。具体可以参看:https://blog.csdn.net/icebergliu1234/article/details/104584827

which:有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。  

比如你安装了mysql,由于某种原因没有设置环境变量,那么

运行:which mysql

就会报错:/usr/bin/which: no mysql in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

解决方法就是插入环境变量,

export PATH=$PATH:/usr/local/mysql//bin

source /etc/profile

再比如:

which -a which #查看命令which所在位置,-a参数表示找出所有

 

whereis:是在数据库中查找文件,在数据库(var/lib/slocate/slocate.db)中查找与文件名相匹配的二进                         制文件、源文件和帮助手册文件,使用之前可以使用updatedb命令手动更新数据库。

假设你想找,whereis 命令自己所在位置。下面是你具体的操作:

whereis whereis

How to find location of binary file using whereis[2]

需要注意的是,输出的第一个路径才是你想要的结果。使用 whereis 命令,同时也会显示帮助页面和源码所在路径。所以你在输出中看见的第二个路径就是帮助页面文件所在位置。

那么如果只想找到二进制文件呢?

可以使用 -b  这一命令行选项。例如:

whereis -b cp

/usr/bin 寻找二进制文件,你可以用 -B 这一选项来实现。

whereis -B /usr/bin/ -f cp

注意:使用这种方式时可以给出多个路径。使用 -f 这一选项来明确分隔目录列表和要搜索的文件名。

 

locate:与whereis一样的地方是,也是在数据库中进行查找,也可以更新数据库(手动执行updatedb命令),locate通常该系统数据库每天更新一次(可以查看系统的/etc/cron.daily/mlocate,不同系统可能不一样)。

不同的地方是其查询文件类型是所有类型,并且使用的是模糊查询,也就是locate会给出所有与*filename*相匹配的文件的路径。

具体参见:https://blog.csdn.net/icebergliu1234/article/details/104585299

几个使用例子:

1 快速查找文件

locate locate.txt #查找locate.txt
/home/hyb/workspaces/shell/locate/locate.txt

 

2 查找存在的文件

locate locate.txt #查找之前删除locate.txt
#虽然文件不存在,但是仍然被查找出来
/home/hyb/workspaces/shell/locate/locate.txt 
locate -e locate.txt #-e参数可以查找只存在的文件
(由于该文件不存在,因此也不会被查找出来)

3 查找计算文件的数量

locate -c locate.log #只计算查找到的数量
 1

 

4 忽略大小写查找

locate -i locate.zip
/home/hyb/workspaces/shell/locate/LOCATE.zip

 

5 使用正则表达式

普通的查找是模糊匹配的,因此只要目标名称中包含要搜索的名称,都会被搜索出来,但是我们可以利用正则表达式,来精确查找。

locate -r /locate.log$ #查找以/locate.log结尾的文件 

 

 

 

参考:https://blog.csdn.net/u010625000/article/details/44455023

https://www.cnblogs.com/duaimili/p/10208592.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值