2010-12-05

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 指令就可以了。供囉 !


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁