# Linux下查找文件命令集合(which whereis find) **Repository Path**: javychen-cn/find ## Basic Information - **Project Name**: Linux下查找文件命令集合(which whereis find) - **Description**: Linux 下的查找文件命令有很多,常用的有which、whereis、find。这里讲的就是这3个命令之间各自有什么特点和区别。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-26 - **Last Updated**: 2022-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux下查找文件命令合集(which whereis find) ## 1.which ### ### 该命令主要是用来查找系统PATH目录下的可执行文件。其实就是查找那些已经安装好的可以直接执行的命令。 ### ## $ which python3 ### ![命令 1](which.png) ## ### which功能作用:从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径。 ### which执行原理:在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项时返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。 ### which适用场合:一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。 ## ## ## 2.whereis ### ### 该命令可以用来查找二进制文件、源代码文件、帮助命令(man)文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广。 ### ## $ whereis python3 ### ![命令 2](whereis.png) ## ### whereis功能作用:定位/返回与指定名字匹配的二进制文件、源代码文件和帮助手册文件所在的路径。 ### whereis执行原理:首先会去掉filename中的前缀空格和以.开头的任何字符,然后再在数据库(var/lib/slocate/slocate.db)中查找与上述处理后的filename相匹配的二进制文件、源文件和帮助手册文件。为了确保所搜寻的路径信息是最新的版本,使用之前可以使用updatedb命令手动更新数据库。 ### whereis适用场合:二进制文件、源文件和帮助手册文件路径的查找。 ## ## ## 3.find ### ### find命令要比前面的命令复杂的多,功能也强大的多。这条命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。并且支持各种查找条件。但是功能强大肯定是有代价的,那就是搜索速度慢。所以一般前边几种找不出来的情况下才会使用find。另外如果要实现某些特殊条件的查找,比如找出某个用户的size最大的文件,那就只能用find了。 ### ![命令 3参数](find参数.png) ### ## $ sudo find /usr -name python ## ![命令 3](find.png) ### ### ### find功能作用:从当前目录递归搜索文件。 ### find执行原理:遍历当前工作目录及其子目录,非常消耗硬盘资源,查找效率低。 ### find适用场合:能用which、whereis的时候尽量不要用find。 ## ———————————————— ### 补充:type命令 ### ### type命令主要用于区分一个命令到底是shell自带的还是外部独立的二进制文件提供的。如果是shell自带的则会提示此命令为shell buildin,否则会列出命令的位置。 ### ### 例如: ### cd为shell自带的命令,用type cd则显示cd为shell buildin命令。 ### ssh不是shell自带命令,用type时会显示ssh的路径。 ————————————————