功能簡述locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的索引數據庫之後當尋找時就只需查詢這個索引數據庫而不必實際深入檔案系統之中了。Locate因為是只去檢索索引數據庫所以在比find全盤檢索要快非常多。
在一般的 distribution 之中數據庫的建立都被放在 crontab 中自動執行。由於locate使用的數據庫是通過crondaemon周期性建立來更新的。一般周期是一周更新一次所以有在近今天內新建的文件會查找不到或者是查找到已經刪除了的文件。那麼我們可以通過update db命令手動更新一下或者自己再重新調整更新周期。
命令參數
-e 將排除在尋找的范圍之外。
-1 如果 是 1則啟動安全模式。在安全模式下使用者不會看到權限無法看到的檔案。這會使速度減慢因為 locate 必須至實際的檔案系統中取得檔案的 權限資料。
-f 將特定的檔案系統排除在外例如我們沒有道理要把 proc 檔案系統中的檔案 放在資料庫中。
-q 安靜模式不會顯示任何錯誤訊息。
-n 至多顯示 n個輸出。
-r 使用正規運算式 做尋找的條件。
-o 指定資料庫存的名稱。
-d 指定資料庫的路徑
-h 顯示輔助訊息
-V 顯示程式的版本訊息
使用實例
查找包含某個字符串的相關文件
[atong@LiWenTong tmp]$ locate passwd-----》可以發現找出來的文件面只要包含了passwd的都會被顯示出來。我們需要自己再進行相應的篩選。
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib/security/pam_passwdqc.so
/lib/security/pam_unix_passwd.so
查找/etc目錄下m開頭的文件
#locate /etc/m
/etc/mkdir
/etc/mask
手動更新系統索引數據庫
[atong@LiWenTong tmp]$ updatedb
updatedb: can not open a temporary file for`/var/lib/mlocate/mlocate.db'
[atong@LiWenTong tmp]$ sudo updatedb
[sudo] password for atong:
[atong@LiWenTong tmp]$--->需要等一段時間因為更新索引數據庫還是需要再去重新完整的檢索一邊所有文檔
----------------------------後續自我小結---------------------------
locate的功能上也是蠻簡單就是在系統中查找我們想要的東西並且這個locate是類似於查找索引一樣的數據庫表並且是到硬盤當中去一個一個真正的找過去而find就是這樣的方式所以速度上比find快很多但是功能和查找的條件參數上比find也是差很多的。但輕量級的查找是很好用的。
-------------------------------------------------------------------
Linux下的文件查找——type whereis which find locate http://www.linuxidc.com/Linux/2013-06/86038.htm