那你知不知道這些指令的完整檔名放在哪裡?
舉例來說,ls 這個常用的指令放在哪裡呢? 就透過 which 或 type 來找尋吧!
1 指令檔名的搜尋
- which (尋找『執行檔』

這個指令是根據『PATH』這個環境變數所規範的路徑,去搜尋『執行檔』的檔名~
2 檔案檔名的搜尋
因為 whereis 只找系統中某些特定目錄底下的檔案而已,locate 則是利用資料庫來搜尋檔名,
當然兩者就相當的快速, 並且沒有實際的搜尋硬碟內的檔案系統狀態,比較省時間啦!
- whereis (由一些特定的目錄中尋找檔案檔名)

- locate / updatedb

- updatedb:根據 /etc/updatedb.conf 的設定去搜尋系統硬碟內的檔名,並更新 /var/lib/mlocate 內的資料庫檔案;
- locate:依據 /var/lib/mlocate 內的資料庫記載,找出使用者輸入的關鍵字檔名。
- find

但如果我想要找出『4天內被更動過的檔案檔名』呢?那可以使用『find /var -mtime -4 』。那如果是『4天前的那一天』就用『 find /var -mtime 4 』。有沒有加上『+, -』差別很大喔!我們可以用簡單的圖示來說明一下:

圖6.5.1、find 相關的時間參數意義
圖中最右邊為目前的時間,越往左邊則代表越早之前的時間軸啦。由圖 6.5.1 我們可以清楚的知道:
- +4代表大於等於5天前的檔名:ex> find /var -mtime +4
- -4代表小於等於4天內的檔案檔名:ex> find /var -mtime -4
- 4則是代表4-5那一天的檔案檔名:ex> find /var -mtime 4




find 的特殊功能就是能夠進行額外的動作(action)。我們將範例八的例子以圖解來說明如下:

圖6.5.2、find 相關的額外動作
該範例中特殊的地方有 {} 以及 \; 還有 -exec 這個關鍵字,這些東西的意義為:
- {} 代表的是『由 find 找到的內容』,如上圖所示,find 的結果會被放置到 {} 位置中;
- -exec 一直到 \; 是關鍵字,代表 find 額外動作的開始 (-exec) 到結束 (\;) ,在這中間的就是 find 指令內的額外動作。 在本例中就是『 ls -l {} 』囉!
- 因為『 ; 』在 bash 環境下是有特殊意義的,因此利用反斜線來跳脫。
透過圖 6.5.2 你應該就比較容易瞭解 -exec 到 \; 之間的意義了吧!
浙公网安备 33010602011771号