导航菜单

find、whereis、locate和which这4个命令有什么区别?

陆兴东 2026-04-03 12 浏览 Linux命令

一、find命令

find命令是最强大的文件搜索命令(工具)。

特点:实时递归查询文件或目录,功能最全面。

搜索方式:实时遍历指定的目录或子目录(也可从根目录下全全文件系统搜索)。

搜索范围:可指定任何查询路径,如果不指定路径,默认是当前路径。

搜索速度:较慢,因为它要遍历文件系统。

优势:支持各种条件搜索(如:文件/路径名称、大小、时间、权限、正则表达式或关键字搜索等)。

二、whereis命令

whereis命令主要用于查找二进制程序或命令、源码和帮助手册。

搜索范围:搜索可执行文件、源代码和man帮助手册。

搜索路径:预定义的系统目录(不支持搜索用户家目录)。

搜索速度:快

内容输出:显示程序名、bash路径、bash的man 帮助手册页路径 。

三、locate命令

locate命令是基于数据库的快速查找。

搜索方式:是查询预建的文件名数据库(/var/lib/mlcoate/mlcoate.db),如果没有该文件,需要安装一下mlocate。

速度:极快(基于数据库查询)。

缺点:查询结果有可能不是最新的(因为依赖数据库更新的时间,可使用updatedb命令进行更新)。

四、which命令

which命令用于查找$PATH中的可执行文件。

搜索范围:查找$PATH环境变量中配置过的可执行文件。

用途:可执行文件所在路径。

五、命令对照表

特性

which

whereis

locate

find

搜索目标

可执行文件

命令相关文件

所有文件

所有文件

原理

PATH环境变量

预定义目录

文件数据库

实时遍历

实时性

实时

实时

非实时

实时

速度

极快

极快

最快

较慢

功能

简单

简单

中行

强大且复杂

使用场景

确定查找哪个命令

查找命令所有组件

快速搜索文件

精确条件搜索

总之一句话:简单查找命令用which/whereis,快速查文件用locate,精确复杂搜索用find。