linux下查找命令which/whereis/locate/find的对比和总结
来源:互联网 发布:万网域名续费多少钱 编辑:程序博客网 时间:2024/06/03 20:50
linux下的查找命令有很多,常用的有which、whereis、locate、find。那么这4个命令之间各自有什么特点,又有什么区别?什么时候该用哪个才最合适呢?详细不少人没法给出一个精确的答案,包括我自己也是。所以,今天我们就来进行一个全面的总结和对比。
1. which
这条命令主要是用来查找系统PATH目录下的可执行文件。说白了就是查找那些我们已经安装好的可以直接执行的命令。比如:
实例:
leon@Ubuntu:~$ which ls/bin/lsleon@Ubuntu:~$ which cat/bin/catleon@Ubuntu:~$ which gcc/usr/bin/gcc
小结:
- 功能作用:从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径;
- 执行原理:在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项时返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名;
- 适用场合:一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令;
2. whereis
这个命令可以用来查找二进制文件、源代码文件、帮助命令(man)文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广。例如:
实例:
leon@Ubuntu:~$ whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gzleon@Ubuntu:~$ whereis catcat: /bin/cat /usr/share/man/man1/cat.1.gzleon@Ubuntu:~$ whereis gccgcc: /usr/bin/gcc /usr/lib/gcc /usr/bin/X11/gcc /usr/share/man/man1/gcc.1.gz
小结:
- 功能作用:定位/返回与指定名字匹配的二进制文件、源代码文件和帮助手册文件所在的路径;
- 执行原理:首先会去掉filename中的前缀空格和以.开头的任何字符,然后再在数据库(var/lib/slocate/slocate.db)中查找与上述处理后的filename相匹配的二进制文件、源文件和帮助手册文件。为了确保所搜寻的路径信息是最新的版本,使用之前可以使用updatedb命令手动更新数据库;
- 适用场合:二进制文件、源文件和帮助手册文件路径的查找;
3. locate
这个命令也是通过数据库查找文件,但是这个命令的适用范围就比whereis大多了。这个命令可以找到任意你指定要找的文件,并且可以只输入部分文件名(前面两个命令是要输入完整文件名的)。同时locte还可以通过-r选项使用正则表达式,功能十分强大。例如:
实例:
leon@Ubuntu:~$ locate SysChangelog/home/leon/SysChangelog
小结:
- 功能作用:同whereis指令一样,也是从数据库建立的索引中查找,不同的是该命令查找所有部分匹配的文件。使用之前可以使用updatedb命令手动更新数据库;
- 执行原理:默认情况下(当filename中不包含通配符*时),locate会给出所有与*filename*相匹配的文件的路径;
- 适用场合:无法执行文件类型性质的模糊查找(你只记得某个文件的部分名称)。
4. find
find命令要比前边几条复杂的多,功能也强大的多。这条命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。并且支持各种查找条件。但是功能强大肯定是有代价的,那就是搜索速度慢。所以一般前边几种找不出来的情况下才会使用find。另外如果要实现某些特殊条件的查找,比如找出某个用户的size最大的文件,那就只能用find了。
参数:
时间查找参数:
– 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的文件(可以使用通配符);
实例:
leon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ find -name changelog./changelogleon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ find -name fstab./etc/fstab
小结:
- 功能作用:从当前目录递归搜索文件;
- 执行原理:遍历当前工作目录及其子目录,非常消耗硬盘资源,查找效率低;
- 适用场合:能用which、whereis和locate的时候尽量不要用find;
5. 总结:
- linux下查找命令which/whereis/locate/find的对比和总结
- Linux下4个查找命令which、whereis、locate、find的总结
- linux下的文件查找命令总结:find、locate、whereis、which
- linux中Find、whereis、locate、which查找文件命令总结
- linux中Find、whereis、locate、which查找文件命令总结
- linux查找命令which、whereis、locate、find
- Linux下which、whereis、locate、find 命令查找文件
- Linux下which、whereis、locate、find 命令查找文件
- Linux下which、whereis、locate、find 命令查找文件
- Linux下which、whereis、locate、find 命令查找文件
- Linux的五个查找命令:find,locate,whereis,which,type
- Linux的五个查找命令:find,locate,whereis,which,type
- Linux的五个查找命令:find,locate,whereis,which,type
- linux的五个查找命令find,locate,whereis,which,type
- Linux的五个查找命令:find,locate,whereis,which,type
- Linux的五个查找命令:find,locate,whereis,which,type
- Linux的查找命令find,which,whereis,locate区别
- Linux的五个查找命令:find,locate,whereis,which,type
- HDU 3591 The trouble of Xiaoqian 混合背包(完全背包和多重背包混合)
- thinkphp3.2.0 设置错误页面指向 404
- 通过下载lrzsz的tar包,实现rz命令上传本地文件
- JavaSE、JavaEE、JavaWeb分不清?
- WebSocket简单介绍
- linux下查找命令which/whereis/locate/find的对比和总结
- 为什么在Python里推荐使用多进程而不是多线程?
- Linux sed查看某时间段的系统日志
- java线程池概述
- JAVA中循环删除list中元素的方法总结
- 一屏展示多个li轮播设置demo
- swing 实现用户注册界面
- 【归纳】win7下caffe环境搭建与测试
- 我自己找的央视以及各大卫视的直播源(亲测可用)