which,whereis,loacate,find都是用于查找文件的。直观区别如下:
which-用于查找可执行文件,查找路径为环境变量PATH,查找原理为遍历PATH,查找效率高。
whereis-用于查找二进制文件、源文件、帮助文档,查找路径为数据库索引,查找原理为对去除''.''之后的所有字符的文件名进行完全匹配,查找效率高。
locate-用于查找所有文件类型,查找路径为数据库索引,查找原理为绝对路径的部分匹配,查找效率高。
find-用于查找所有文件类型,查找路径可制定,默认遍历当前路径,查找原理为遍历磁盘,查找效率低。
我们最好根据查找文件的类型,选择查找方式,才能最快。
因此,除了which,优先locate,whereis,都找不到再find。