4 找尋檔案

有兩個工具是可以用來找尋檔案,它們是 find 和 locate。find 用檔案現在的狀態來搜尋,而 locate 則用一個由系統於每日早上六時四十二分產生(這是 cron job,在其它章節有提及)的索引檔來搜尋。locate 不會找得到索引檔產生後才創造的檔案。不過因為 locate 利用索引檔來搜尋,所以速度快得很,就好像利用書本的索引而非只看內容。

為了對比這兩種搜尋的方法,先假設您忘記了 X 設定檔的位置。

$ locate XF86Config
應該很快便得到答案,它們是一列含有 XF86Config 的檔案,像這樣的輸出:

/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config.eg

/usr/X11R6/man/man5/XF86Config.5x.gz

現在試試指令 find:

$ find / -name XF86Config
您會聽到很多磁片活動的聲音,而且時間也比較長。結果像這樣:

/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config

find: /var/spool/cron/atjobs: Permission denied

find: /var/spool/cron/atspool: Permission denied

find: /var/lib/xdm/authdir: Permission denied

留意 find 只找到名字和 XF86Config 一模一樣的檔案,而非含有那個字串的檔案。另外,find 是會在系統的所有目錄搜尋──包括您沒有閱讀權限的地方,因此您得到 Permission denied 的訊息。

用法也有點不同。用 find 的時候,您需要指定從哪個目錄開始搜尋,但 locate 會自動使用根目錄。指定名字時您需要使用 -name 選項,而且您可以用別的條件來搜尋,例如更新日期或擁有者。利用 find 去尋找含有 XF86Config 的檔案,需要用到 wildcard:

$ find / -name '*XF86Config*'
有如很多命令行式工具一樣,find 接受 wildcard 用來作參數。

一般來說,find 的功能比較強大,而 locate 比較快,適合日常快速的搜尋。要把搜尋的各方面都解釋得到將會耗用很長的時間,您不妨鍵入 info find,它會帶您到 find 和 locate 的 info page,那�埵釦騤埏伓禤ヾC



John Goerzen / Ossama Othman / Debian 中文計劃