linux 命令 which whereis locate find

0、概述

*    `which`:在PATH变量指定的路径中,搜索与指定名字匹配的系统命令的位置,并且返回第一个搜索结果。
*   `whereis`:搜索与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。在数据库中查询。
*   `locate`:locate 会给出所有与`*filename*` 相匹配的文件的路径。在数据库中查询。
*   `find`:实际搜寻硬盘查询文件名称。
*   `whatis`:展示命令手册页面描述里的内容。使用 `mkwhatis` 命令可将当前系统上所有的帮助手册及与之对应的关键字创建为一个数据库。

1、which 

语法:which   [-a]   cmdname1 cmdname2 ......

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

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

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

[root@redhat ~]# which passwd
/usr/bin/passwd

2、whereis 

语法: whereis [-bmsu] 文件或者目录名称 

参数说明: 

  • -b : 只找二进制文件 
  • -m: 只找在说明文件manual路径下的文件 
  • -s : 只找source源文件 
  • -u : 没有说明文档的文件 

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

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

适用场合:二进制文件、源文件和帮助手册文件路径的查找。

例如: 

# 将和passwd文件相关的文件都查找出来
[fenglepeng@centos]# whereis passwd   
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz   # 只将二进制文件查找出来
[fenglepeng@centos]# whereis -b passwd   
passwd: /usr/bin/passwd /etc/passwd 

和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 

但是该数据库文件并不是实时更新,默认情况下每天更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 (使用updatedb命令进行更新)

3、 locate 

语法: locate 文件或者目录名称 

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

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

适用场合:没有文件类型性质的模糊查找(你只记得某个文件的部分名称)。

个人感觉locate和whereis差不多,locate比较适合与数据库一起配合着用,locate命令可以在搜寻数据库时快速找到档案

[fenglepeng@centos]# locate passwd
/lib/security/pam_unix_passwd.so
/lib/security/pam_passwdqc.so
/usr/include/rpcsvc/yppasswd.x
/usr/include/rpcsvc/yppasswd.h
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/rpcsvc/yppasswd.ph
/usr/lib/kde3/kded_kpasswdserver.la
/usr/lib/kde3/kded_kpasswdserver.so
/usr/bin/vncpasswd
/usr/bin/userpasswd
/usr/bin/yppasswd

4、 find 

语法: find 路径 参数 

参数说明: 

  1. 时间查找参数: 
    1. -atime n :将n*24小时内存取过的的文件列出来 
    2. -ctime n :将n*24小时内改变、新增的文件或者目录列出来 
    3. -mtime n :将n*24小时内修改过的文件或者目录列出来 
    4. -newer file :把比file还要新的文件列出来 
  2. 名称查找参数: 
    1. -gid n       :寻找群组ID为n的文件 
    2. -group name  :寻找群组名称为name的文件 
    3. -uid n       :寻找拥有者ID为n的文件 
    4. -user name   :寻找用户者名称为name的文件 
    5. -name file   :寻找文件名为file的文件(可以使用通配符) 

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

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

适用场合:能用which、whereis和locate的时候尽量不要用find。

[fenglepeng@centos]# find / -name zgz
/home/zgz
/home/zgz/zgz
/home/weblogic/bea/user_projects/domains/zgz 

总结

find,遍历硬盘查找,通常使用 find / -name Filename。耗内存。locate和whereis是根据数据库查找,无法实时查找文件。有可能找到刚才删除的文件和无法找到新增的文件。which根据path找可执行文件。whereis 可以用来找相关安装路径和二进制文件,可执行文件。

当我们用whereis和locate无法查找到我们需要的文件时,可以使用find,但是find是在硬盘上遍历查 找,因此非常消耗硬盘的资源,而且效率也非常低,因此建议大家优先使用whereis和locate。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 转 exe -- py2exe库实录

本文基于windows 7 python 3.4 把python程序打包成exe,比较好用的库是py2exe 其操作步骤是: --> 编写python程序 --> 再额外编写一个导入了py2exe的python脚本(不妨如:setup.py)存在同一目录下 --> 运行这个脚本,打包生成的exe文件…

python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)

搞定这套Python爬虫面试题(面试会so easy)来源:中文源码网 浏览: 次 日期:2019年11月5日【下载文档: 搞定这套Python爬虫面试题(面试会so easy).txt 】(友情提示:右键点上行txt文档名->目标另存为)搞定这套Python爬虫面试题(面试会…

fastjson与spring mvc整合的配置

fastjson 是阿里巴巴开发的开源json解析组件&#xff0c;方便于通过java来生成和解析json格式的字符串和对象。 fastjson可以对Spring的返回数据进行json转换&#xff08;SpringMVC的ResponseBody注释&#xff09; 以下附上与spring mvc整合的xml配置&#xff1a; <mvc:anno…

Python 框架 之 Scrapy 爬虫(一)

在编写爬虫时&#xff0c;性能的消耗主要在IO请求中&#xff0c;当单进程单线程模式下请求URL时必然会引起等待&#xff0c;从而使得请求整体变慢。 1、同步执行 import requestsdef fetch_async(url):response requests.get(url)return responseurl_list [http://www.gith…

编程新手导论(转载)

第二部分 导论&#xff0c;这一部分主要是关于编程的导论&#xff0c; (要懂得一点思想具备一点常识)《设计&#xff0c;编码&#xff0c;&#xff0c;与软工》&#xff08;编程与思想&#xff09;这一章解释了三种思想&#xff0c;原语&#xff0c;抽象&#xff0c;组合&#…

如何让电脑成为看图说话的高手?计算机视觉顶会ICCV论文解读

ICCV&#xff0c;被誉为计算机视觉领域三大顶级会议之一。作为计算机视觉领域最高级别的会议之一&#xff0c;其论文集代表了计算机视觉领域最新的发展方向和水平。阿里巴巴在今年的大会上有多篇论文入选&#xff0c;本篇所解读的论文是阿里iDST与多家机构合作的入选论文之一&a…

canvas绘制线条1像素的问题

http://jo2.org/html5-canvas%E7%94%BB%E5%9B%BE3%EF%BC%9A1px%E7%BA%BF%E6%9D%A1%E6%A8%A1%E7%B3%8A%E9%97%AE%E9%A2%98/转载于:https://www.cnblogs.com/XIE7654/p/7493315.html

php汽车找车位,遭遇到车多车位少 教你如何快速找到停车位

[摘要]车主们大多时间会穿梭在市区&#xff0c;到了目的地后那就先找停车位&#xff0c;现在市区寸土寸金&#xff0c;一个停车位面积要占几平米呢&#xff0c;所以停车位基本是不够用的。下面和大家聊聊怎么找合适的停车位。车主们大多时间会穿梭在市区&#xff0c;去商场购物…

Python 框架 之 Scrapy 爬虫(二)

Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 其可以应用在数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取)所设计的&#xff0c; 也可以应用在获取API所返回的数据(例如 Amazon Ass…

十六进制透明度参照表

00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00&#xff08;全透明&#xff09;转载于:http…

lamp和php,[LAMP]Apache和PHP的结合

在LAMP架构中&#xff0c;Apache通过PHP模块与Mysql建立连接&#xff0c;读写数据。那么配置Apache和PHP结合的步骤是怎么操作的呢&#xff1f;1、修改http.conf文件[rootjuispan ~]# cat /usr/local/apache2.4/conf/httpd.conf......#ServerName......AllowOverride noneRequi…

Day-5: Python高级特性

python的理念是&#xff1a;简单、优雅。所以&#xff0c;在Python中集成了许多经常要使用的高级特性&#xff0c;以此来简化代码。 切片&#xff1a;对于一个list或者tuple&#xff0c;取其中一段的元素&#xff0c;称为切片&#xff08;Slice&#xff09;。 L[start:end]表示…

前端之 XMLHttpRequest

XMLHttpRequest 和AJAX的爱恨情仇 AJAX 是 asynchronous javascript and XML 的简写&#xff0c;中文翻译是异步的 javascript 和 XML&#xff0c;这一技术能够向服务器请求额外的数据而无须卸载页面&#xff0c;会带来更好的用户体验。虽然名字中包含 XML &#xff0c;但 AJAX…

makefile——小试牛刀

//a.h,包含头文件stdio.h,并且定义一个函数print #include<stdio.h> void print();//b.c&#xff0c;包含头文件a.h&#xff0c;然后就可以写print函数的内容了 #include"a.h" void print(){ printf("who are you\n"); }//c.c&#xff0c;包含头文件…

云电脑是什么_云电脑和我们现在平时用的电脑有什么区别?

&#x1f340;温馨提示&#x1f340;公众号推送改版&#xff0c;为了不让您错过【掌中IT发烧友圈】每天的精彩推送&#xff0c;切记将本号设置星标哦&#xff01;~01云电脑&#xff0c;是5G云服务时代的电脑新概念&#xff0c;是电脑的新的一种形态。从具体操作使用上来讲&…

PHP如何用while实现循环,PHP 循环 -

PHP 循环 - While 循环循环执行代码块指定的次数&#xff0c;或者当指定的条件为真时循环执行代码块。PHP 循环在您编写代码时&#xff0c;您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。在 PHP 中&#xff0c;提供了下列循环语…

比较全的C语言面试题

1. static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1).限制变量的作用域 2).设置变量的存储域 2. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象…

PHP爬取历史天气

PHP爬取历史天气 PHP作为宇宙第一语言&#xff0c;爬虫也是非常方便&#xff0c;这里爬取的是从天气网获得中国城市历史天气统计结果。 程序架构 main.php <?phpinclude_once("./parser.php");include_once("./storer.php");#解析器和存储器见下文$par…

Python 第三方库之docx

日常上官网 https://python-docx.readthedocs.io/en/latest/ 一、安装 pip install python-docx 二、写入word word 中主要有两种用文本格式等级&#xff1a;块等级&#xff08;block-level&#xff09;和内联等级&#xff08;inline-level&#xff09;word 中大部分内容都…

Unity AI副总裁Danny Lange:如何用AI助推游戏行业?

本文讲的是Unity AI副总裁Danny Lange&#xff1a;如何用AI助推游戏行业&#xff1f; &#xff0c;10月26日&#xff0c;在加州山景城举办的ACMMM 2017大会进入正会第三天。在会上&#xff0c;Unity Technology负责AI与机器学习的副总裁Danny Longe进行了题为《Bringing Gaming…