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找目录)。

 

posted on 2017-03-06 16:29  诸子流  阅读(1534)  评论(0编辑  收藏  举报