首頁 > 軟體

Linux 兩個查詢命令 locate,find

2020-06-16 17:02:59

Linux中有很多查詢命令,今天主要講解locate,find兩個命令。

1.locate

1)查詢系統上預建的檔案索引資料庫

       /var/lib/mlocate/mlocate.db  

       注意:如果這個檔案刪除了,locate就無法使用了。需手動手動更新資料庫(updatedb),或重新啟動系統,locate才能恢復作用

依賴於事先構建的索引:

       索引的構建是在系統較為空閒時自動進行( 周期性任務 /etc/cron.daily), 管理員手動更新資料庫(updatedb)

       索引構建過程需要遍歷整個根檔案系統,極消耗資源

 

 

2)工作特點:

•  查詢速度快

•  模糊查詢

•  非實時查詢

•  搜尋的是檔案的全路徑,不僅僅是檔名

•  只搜尋使用者具備讀取和執行許可權的目錄,沒有許可權,即使資料庫有內容,也不顯示,為了安全

3locate   用法

                  -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


IT145.com E-mail:sddin#qq.com