2021-05-12 14:32:11
Linux 兩個查詢命令 locate,find
Linux中有很多查詢命令,今天主要講解locate,find兩個命令。
1.locate
(1)查詢系統上預建的檔案索引資料庫
/var/lib/mlocate/mlocate.db
注意:如果這個檔案刪除了,locate就無法使用了。需手動手動更新資料庫(updatedb),或重新啟動系統,locate才能恢復作用
依賴於事先構建的索引:
索引的構建是在系統較為空閒時自動進行( 周期性任務 /etc/cron.daily), 管理員手動更新資料庫(updatedb)
索引構建過程需要遍歷整個根檔案系統,極消耗資源
(2)工作特點:
• 查詢速度快
• 模糊查詢
• 非實時查詢
• 搜尋的是檔案的全路徑,不僅僅是檔名
• 只搜尋使用者具備讀取和執行許可權的目錄,沒有許可權,即使資料庫有內容,也不顯示,為了安全
(3)locate 用法
-i 不區分大小寫的搜尋
-n # 只列舉前#個匹配專案
-r 支援正則
2.find
實時查詢工具,通過遍歷指定路徑完成檔案查詢(find不同於其他命令的習慣,選項只加一個-)
相較於locate,find功能非常強大,除了基於檔案名字查詢外,還能基於許可權,檔案型別,大小等好多方式進行查詢,所以被我們普遍應用。
(1)工作特點:
• 查詢速度略慢
• 精確查詢(可以通過正則,萬用字元,實現模糊查詢)
• 實時查詢
• 只搜尋使用者具備讀取和執行許可權的目錄
(2)find 用法格式
find [OPTION]... [ 查詢路徑] [ 查詢條件] [ 處理動作]
查詢路徑:指定具體目標路徑;預設為當前目錄
查詢條件:指定的查詢標準,可以檔名、大小、型別、許可權等標準進行;預設為找出指定路徑下的所有檔案
處理動作:對符合條件的檔案做操作,預設輸出至螢幕,還有更多其他的處理動作。
(3)查詢條件
① 根據搜尋層級
-maxdepth level 最大搜尋目錄深度, -1 指定目錄為第1級,當前目錄
-mindepth level 最小搜尋目錄深度
② 根據檔名和inode 查詢:
-name :基於名稱的精確查詢 ,支援使用文字萬用字元 *, ?, [], [^]等
-iname :基於名稱忽略大小寫的精確查詢查詢
-inum :基於inode查詢
-samefile name :基於相同inode號的查詢(查詢硬連結)
-links n 硬連結數為n 的檔案
-regex "PATTERN" :支援正則 ,預設為(emacs標準的正則),查詢正則表達的範圍
例:".*/[a-z].*" 搜尋所有以小寫字母開頭的檔案
-regextype egrep -regex 支援egrep同標準的正則
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2017-11/148290p2.htm
相關文章