Ubuntu 如何搜寻档案 (find、locate、whereis、which 比较) ?

阿舍在用指令操作 Ubuntu 的时候,经常会需要知道档案的路径,所以,也就常常会用到搜寻档案的指令,阿舍比较常用的是 whereis 和 find,其实,还有 locate 和 which 二个指令可用,这四个指令都有不同的功能,阿舍一直时间去搞清楚,今天花了点时间,就把它整理如下了。

find
这个算是功能最多的指令,可以用依档名、拥有者、群组和权限...等等一堆来搜寻档案,不过,find 指令是一定要指定搜寻的路径,否则就只有搜寻目前所在的资料夹,例如,阿舍在家目录用 find hosts 的指令来搜寻 hosts 档的话,就一定找不到东西,如果改用 find /etc hosts 的话,就会出现一堆档案名称里有 hosts 这个四个字的所有档案出来,如果再改成 sudo find /etc -name hosts 就会找出更接近我们要找的档案列表出来的。

locate
这个指令和其他三个指令不同的地方是,locate 指令并不是宜的去搜寻档案,而是去搜寻由 updatedb 指令所建立和更新的资料库并读入记忆体中,所以,locate 指令的搜寻速度远比其他的指令来的快,因此,当阿舍执行 locate hosts 指令后,几乎是马上就列出档案名称里有 hosts 这个四个字的所有档案出来哩 ! 不过,通常优点都是来自弱点,只要是安装之后,在还没有执行updatedb 之前,这些新的档案用 locate 指令是找不到的。

whereis
这个指令只会搜寻几个特定的路径,像是 /usr、/bin 或 /etc 等,适合用来搜寻 Ubuntu 的执行档和原始档及 man 说明,如果用 whereis host 来搜寻 host 档,就能够找出需要的结果,如果用来搜寻家目录的档案,就会找不到的。

which
这个指令搜寻的范围比前一个的 whereis 更小,which 指令只用来搜寻 Ubuntu/Linux 的指令程式,如果,阿舍用 which hosts 的指令来找 hosts 的话,很抱歉喔 ! 一定是找不到的,因为 hosts 不是指令,那么如果阿舍改成 which which 或 which php5 的话,马上就会有结果跑出来,因为 which 和 php5 都是指令哩 !

这样整理下来,阿舍的结论是,要快就用 locate,要准就用 find,要查系统档案就用 whereis,要查指令就用 which,怕麻烦的话,就只要好好学会 find 指令就可以了。供啰 !

共享: