which/whereis/whatis/locate/find的区别
which--在$PATH目录下查找文件
whereis--在预定目录下(whereis -l查看)查找文件
whatis--将man手册NAME节区下的那句描述的话打印出来
locate--在数据库中查找目录或文件
find--遍历目录查找文件
说明:
1.关于which和whereis查找原理:
都说which查找可行文件,whereis查找可执行文件、源码和man手册。经测试证明which和whereis都只是在设定的目录下简单地匹配字符串,并不会真的去确认找到的文件是不是真正的可执行文件、源码和man手册。
2.关于which和whereis的区别:
which:文件名完全匹配、有后缀名也不行、遍历$PATH、找到一个匹配的文件即退出。
whereis:文件名完全配配、但可有后缀名、遍历包含$PATH的多个目录、找出所有匹配文件。
3.关于whereis和locate是否使用同一数据库:
有说whereis和locate都使用了数据库,由于whereis我们什么都没做就可以查到刚创的文件所以whereis用没用数据库不能确定;但基于下图中whereis可以查到而locate要updatedb后才能查到,可以推断whereis和locate不是使用同一数据库。
4.关于使用locate和find查找文件的区别:
locate:模糊查询、找目录和文件。locate查找以某字符串结尾的文件或目录:locate *network"。locate在指定目录下查找:locate "/etc/*network"
find:完全匹配(可通过“*YourString*”形式模糊查询)、只找文件(可加-type d找目录)。