Linux 查找命令
来源:互联网 发布:炉石盒子mac版用不了 编辑:程序博客网 时间:2024/05/05 18:24
which(查找可执行文件)
作用:shows the full path of (shell) commands
常用选项:
-a——列出所有找到的结果(不加-a只列出第一项)
说明:
1、此命令是【根据PATH】查找,而且可以查找【非系统命令】,因此:
①可能不同的用户得到不同的结果(例如:which -a ifconfig);
②只要将【用户自己创建可执行文件】拷贝到PATH路径下,which也能找到;
2、只支持全名,【不支持通配符】
whereis(寻找特殊文件)【难理解】
作用:寻找二进制文件、源文件、manual帮助文件(但又找不到用户自己创建的二进制文件或源文件)locate the binary, source, and manual page files for a command
常用选项:
-b:只查找二进制文件(并不一定是可执行文件)
-m:manul,只查找帮助文件
-s:只找source文件
-u:寻找-b,-m,s以外的特殊文件
说明:
1、“奇怪的”查找规则:(举例)whereis install.log是以intall即install.*为目标查找的,所以whereis install.log == whereis install
2、特殊文件的“特殊”之处:(举例)
whereis httpd——可行
whereis math.h——可行
whereis cd——可行(注意:cd是Shell内置命令,找到的是manual page文件)
whereis c1——不可行(c1为用户自己编译的得到的可执行文件)
3、文件数据库中查找
4、【不支持通配符】
locate( 查找数据库)
-----原理locate 是在已创建的数据库 /var/lib/mlocate 里查找,所以速度比 find 快,但缺点是如果数据库更新不及时,可能找不到刚创建的文件或找到已经不存在的文件,这时用 update 命令来更新数据库
-----更新数据库
updatedb
-----用法及常见选项
usage: locate [OPTION]... PATTERN...
locate 的参数是 PATTERN, 而不是简单的文件名
If --regex is not specified, PATTERNs can contain globbing characters(通配符).
If any PATTERN contains no globbing characters, locate behaves as if the pattern were *PATTERN*.(如果 PATTERN 中不含通配符,则默认 PATTERN 为 *NAME*)
-b 与 -w
-b: --basename, the base name, 只匹配文件名(但 PATTERN 的规则不变,如果 PATTERN 中不含通配符,则还是以 *NAME* 进行匹配)
-w: --wholename(默认选项), the whole path name, 匹配整个完整路径
【举例】
$ locate include# == locate -w include/usr/src/linux-headers-2.6.38-8-generic-pae/include/linux/xfrm.h# *include* 会在路径中出现...$ locate -b include/usr/src/linux-headers-2.6.38-8-generic-pae/scripts/checkincludes.pl# *include* 只出现在文件名中...-r: --regex, 正则表达式匹配
-i: --ignore-case
【举例】
1、如果 PATTERN 中含有通配符(globbing characters),则 *NAME* 模式被打破
$ locate *.sh不会出现 *.sh* 的文件
2、查找文件名为 NAME 的文件
$ locate -b '\NAME'-b 指只能是文件名,\ 是通配符,能打破默认模式 *NAME*
To search for a file named exactly NAME (not *NAME*), use
locate -b '\NAME'
Because \ is a globbing character, this disables the implicit replacement of NAME by *NAME*.
find(磁盘查找)
-name:支持通配符find / -name filename
-inum
find . -inum <inode>
【举例】
1、不通过文件名,通过 inode number 修改文件名
$ mv `find . -inum 1211251` nonono.zip
which,whereis,locate,find的比较
which根据PATH路径查找可执行文件whereis是在文件数据库中查找特殊文件(“特殊”之处见上面)
locate是在文件数据库中查找所有文件
find是磁盘查找
所以,如果是查找一般文件,如果觉得这个文件创建很久了,最好用locate;如果文件才创建不久,就用find。
如果是特殊文件,就用which和whereis,两个侧重点不同。
- Linux下查找命令
- linux查找命令详解
- Linux下查找命令
- Linux查找命令
- linux五个查找命令
- linux 查找命令大全
- linux查找文件命令
- linux基本查找命令
- linux 查找命令
- linux 查找命令
- Linux 查找命令
- Linux查找命令大全
- linux查找命令
- linux查找相关命令
- linux查找文件命令
- linux find查找命令
- linux 查找命令
- linux查找文件命令
- libxml -- 解析 XML 文档
- 9.7 introduce Null object (引入null对象)
- jqurey表单验证插件 validate
- 说话之前考虑三秒钟
- AS3中简单的一般对象池
- Linux 查找命令
- DM365启动之—RBL、UBL分析
- C#窗体Combobox简单用法(1)
- 如何控制IE的行为
- 我的程序员之路从现在开始:做大于想,兴趣大于利益,计划大于随机
- 联想乐Pad A1入手!开箱图片鉴赏(点击打开高清大图)
- C++编程杂谈之一:编译器
- 父窗体对子窗体操作
- 网狐架设,中心服务器错误数据库异常:[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问