Linux命令which、whereis、find、locate的区别
这几个命令都具有查找功能,但在具体的使用情景上具有一些差异,较好的使用他们可以在shell操作时不那么手忙脚乱。
1.which
- which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
- 在使用which进行查找时,查找目标需要提前配置到环境变量中,否则查不出来。
- 环境变量的配置,使用
vim /etc/profile
然后编辑profile
文件即可
2.whereis
- whereis命令只能用于程序名的搜索,如果省略参数,则返回所有信息。
- 二进制文件(参数
-b
); - man说明文件(参数
-m
); - 源代码文件(参数
-s
)。
3.find
- find是覆盖最全面的查找工具,但它在硬盘上遍历查找,非常消耗硬盘的资源,而且效率也很低,优先使用其他几个。
find /
列出/目录和子目录下的所有文件和文件夹
find / -name '*txt'
根据文件名或者正则表达式匹配搜索
find / -iname '*txt'
同上,忽略大小写
find / ! -name '*txt'
对上面的搜索结果取反
find / -type d
根据文件类型搜索,d文件夹,f普通文件,etc
find / -type f -size +2k
根据文件大小搜索,+2k大于2k的文件,-2k小于2k的文件,2k等于2k的文件
find / -type f -name '*txt' -delete
删除匹配到的文件
4.locate
- 相当于
find -name
,但它是从数据库(/var/lib/locatedb
)中查找,效率要比find高很多。 - Linux系统自动创建locatedb,每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用
updatedb
命令,手动更新数据库。