locate 和 find:兩個查找文件的命令

對於初次切換到 Linux 系統的朋友來說,如果想要從命令行界面執行查找文件的任務的話,那麼,locate 和 find 是兩個需要了解的命令。雖說這兩個命令都可以滿足查找文件的操作,不過卻是各有所長,在選擇上不妨兼而用之。
  1. locate:該命令在運行時需要後臺索引的數據庫作爲支撐,在 Ubuntu 中這個數據庫文件位於 /var/cache/locate/locatedb。一般來說,這個數據庫文件每天是通過 cron 自動更新的。如果不幸沒有得到更新,那麼可以執行 sudo updatedb 來手動更新。 假如我想要在系統中查找一個名爲 linux.html 的文件,那麼可以這樣執行命令:locate linux.html。locate 搜索文件的速度很快,一會兒就會把結果列出來。locate 有一個十分有用的選項 -r,它可以讓你在搜索文件時使用正則表達式。
  2. find:這是另一個 Linux 系統中重要的文件查找命令。find 命令的功能很強大,其一般使用方法爲:find 位置 -name 文件名稱。例如,我要在 / 這個根目錄中查找 linux.html 文件,可以執行 find / -name linux.html。你除了可以按文件名稱來使用 find 查找文件外,也可以根據文件大小(通過 -size n 選項指定)、時間(如 -atime n 表示查找 n 天前訪問過的文件)來搜索文件。 此外,find 命令同樣支持在搜索文件時使用正則表達式,你只需指定 -regex 選項即可。

locate

功能說明: 查找文件。 
語 法:locate [-d <數據庫文件>][--help][--version][範本樣式...]
補充說明:locate指令用於查找符合條件的文件,它會去保存文件與目錄名稱的數據庫內,查找合乎範本樣式條件的文件或目錄。 
參 數
-d<數據庫文件>或--database=<數據庫文件> 設置locate指令使用的數據庫。locate指令預設的數據庫位於/var/lib/slocate目錄裏,文件名爲slocate.db,您可使用這個參數另行指定。 
--help 在線幫助。 
--version 顯示版本信息。
 
find
功能說明: 查找文件或目錄。
語 法:find [目錄...][-amin <分鐘>][-anewer <參考文件或目錄>][-atime <24小時數>][-cmin <分鐘>][-cnewer <參考文件或目錄>][-ctime <24小時數>][-daystart][-depyh][-empty][-exec <執行指令>][-false][-fls <列表文件>][-follow][-fprint <列表文件>][-fprint0 <列表文件>][-fprintf <列表文件><輸出格式>][-fstype <文件系統類型>][-gid <羣組識別碼>][-group <羣組名稱>][-help][-ilname <範本樣式>][-iname <範本樣式>][-inum <inode編號>][-ipath <範本樣式>][-iregex <範本樣式>][-links <連接數目>][-lname <範本樣式>][-ls][-maxdepth <目錄層級>][-mindepth <目錄層級>][-mmin <分鐘>][-mount] 
[-mtime <24小時數>][-name <範本樣式>][-newer <參考文件或目錄>][-nogroup][noleaf] [-nouser][-ok <執行指令>][-path <範本樣式>][-perm <權限數值>][-print][-print0][-printf <輸出格式>][-prune][-regex <範本樣式>][-size <文件大小>][-true][-type <文件類型>][-uid <用戶識別碼>][-used <日數>][-user <擁有者名稱>][-version][-xdev][-xtype <文件類型>]
補充說明:find指令用於查找符合條件的文件。任何位於參數之前的字符串都將被視爲欲查找的目錄。
參 數
-amin<分鐘> 查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算。 
-anewer<參考文件或目錄> 查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄。 
-atime<24小時數> 查找在指定時間曾被存取過的文件或目錄,單位以24小時計算。 
-cmin<分鐘> 查找在指定時間之時被更改的文件或目錄。 
-cnewer<參考文件或目錄> 查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄。 
-ctime<24小時數> 查找在指定時間之時被更改的文件或目錄,單位以24小時計算。 
-daystart 從本日開始計算時間。 
-depth 從指定目錄下最深層的子目錄開始查找。 
-expty 尋找文件大小爲0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄。 
-exec<執行指令> 假設find指令的回傳值爲True,就執行該指令。 
-false 將find指令的回傳值皆設爲False。 
-fls<列表文件> 此參數的效果和指定"-ls"參數類似,但會把結果保存爲指定的列表文件。 
-follow 排除符號連接。 
-fprint<列表文件> 此參數的效果和指定"-print"參數類似,但會把結果保存成指定的列表文件。 
-fprint0<列表文件> 此參數的效果和指定"-print0"參數類似,但會把結果保存成指定的列表文件。 
-fprintf<列表文件><輸出格式> 此參數的效果和指定"-printf"參數類似,但會把結果保存成指定的列表文件。 
-fstype<文件系統類型> 只尋找該文件系統類型下的文件或目錄。 
-gid<羣組識別碼> 查找符合指定之羣組識別碼的文件或目錄。 
-group<羣組名稱> 查找符合指定之羣組名稱的文件或目錄。 
-help或--help 在線幫助。 
-ilname<範本樣式> 此參數的效果和指定"-lname"參數類似,但忽略字符大小寫的差別。 
-iname<範本樣式> 此參數的效果和指定"-name"參數類似,但忽略字符大小寫的差別。 
-inum<inode編號> 查找符合指定的inode編號的文件或目錄。 
-ipath<範本樣式> 此參數的效果和指定"-ipath"參數類似,但忽略字符大小寫的差別。 
-iregex<範本樣式> 此參數的效果和指定"-regexe"參數類似,但忽略字符大小寫的差別。 
-links<連接數目> 查找符合指定的硬連接數目的文件或目錄。 
-iname<範本樣式> 指定字符串作爲尋找符號連接的範本樣式。 
-ls 假設find指令的回傳值爲True,就將文件或目錄名稱列出到標準輸出。 
-maxdepth<目錄層級> 設置最大目錄層級。 
-mindepth<目錄層級> 設置最小目錄層級。 
-mmin<分鐘> 查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算。 
-mount 此參數的效果和指定"-xdev"相同。 
-mtime<24小時數> 查找在指定時間曾被更改過的文件或目錄,單位以24小時計算。 
-name<範本樣式> 指定字符串作爲尋找文件或目錄的範本樣式。 
-newer<參考文件或目錄> 查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄。 
-nogroup 找出不屬於本地主機羣組識別碼的文件或目錄。 
-noleaf 不去考慮目錄至少需擁有兩個硬連接存在。 
-nouser 找出不屬於本地主機用戶識別碼的文件或目錄。 
-ok<執行指令> 此參數的效果和指定"-exec"參數類似,但在執行指令之前會先詢問用戶,若回答"y"或"Y",則放棄執行指令。 
-path<範本樣式> 指定字符串作爲尋找目錄的範本樣式。 
-perm<權限數值> 查找符合指定的權限數值的文件或目錄。 
-print 假設find指令的回傳值爲True,就將文件或目錄名稱列出到標準輸出。格式爲每列一個名稱,每個名稱之前皆有"./"字符串。 
-print0 假設find指令的回傳值爲True,就將文件或目錄名稱列出到標準輸出。格式爲全部的名稱皆在同一行。 
-printf<輸出格式> 假設find指令的回傳值爲True,就將文件或目錄名稱列出到標準輸出。格式可以自行指定。 
-prune 不尋找字符串作爲尋找文件或目錄的範本樣式。 
-regex<範本樣式> 指定字符串作爲尋找文件或目錄的範本樣式。 
-size<文件大小> 查找符合指定的文件大小的文件。 
-true 將find指令的回傳值皆設爲True。 
-typ<文件類型> 只尋找符合指定的文件類型的文件。 
-uid<用戶識別碼> 查找符合指定的用戶識別碼的文件或目錄。 
-used<日數> 查找文件或目錄被更改之後在指定時間曾被存取過的文件或目錄,單位以日計算。 
-user<擁有者名稱> 查找符合指定的擁有者名稱的文件或目錄。 
-version或--version 顯示版本信息。 
-xdev 將範圍侷限在先行的文件系統中。 
-xtype<文件類型> 此參數的效果和指定"-type"參數類似,差別在於它針對符號連接檢查。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章