![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yM0Q2MygDN3UDN1QDNkFDN5kzN4EGZyEGZ5MjZ5E2Y48CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
find(查找)主要沿着檔案層次(目錄)結構依次向下周遊,比對符合條件的檔案,可以附帶執行相應的操作選項,預設的操作結果是列印出符合條件的檔案與目錄。 |
主要功能如下(所有測試均在目前目錄(test)下開始比對,搜尋):
基本用法
列出給定目錄(base_path)下所有的檔案和子目錄:
find base_path -print
補充:根據檔案名和正規表達式進行搜尋,使用選項 -name或-iname(忽略大小寫):
find base_path -name ‘xxx’ -printfind base_path -iname ’xxx‘ -print
否定參數,可以用 !排除所指定到的模式
此處将列印出除txt文本檔案外的的所有檔案。
基于目錄深度的搜尋
find指令指定周遊完所有的子目錄。使用-maxdepth和-mindefth可以限制find指令周遊的目錄深度,并且find指令預設不搜尋符号連結,可以用-L選項改變這種行為。
例如-maxdepth的參數為1時,隻比對目前目錄下。
-mindepth的參數代表了開始進行比對的目錄到base_path的最短距離。
基于檔案類型搜尋
使用-type可以指定搜尋的檔案類型,linux/unix将所有的的一切都視為檔案(檔案類型有:普通檔案f,目錄d,符号連結 l,字元裝置c,塊裝置b,套接字s,FIFO-p),使用 -type選項我們能夠對檔案類型進行過濾。
此處就會隻比對出特定項下的所有普通檔案,和目錄。
根據檔案的時間戳進行搜尋
Linux/Unix檔案系統中的每一個檔案都有三種時間戳,通路時間(-atime),修改時間(-mtime),變化時間(-ctime),機關為天數,用整數指定,數字前加上+,表示大于這個時間;加上-,表示小于這個天數;不加表示剛好這個天數。
此處的檔案是我在進行截圖之前才建立的,通路,修改,變化時間均小于一天。
當然相應的用分鐘作為機關就可以用選項(-amin)(-mmin)(-cmin),如下我們測試修改時間
基于檔案大小的搜尋
find提供了指定檔案大小的機關選項進而搜尋符合大小檔案的功能,這個搜尋也常常會讓使用者感到非常舒服(b:塊, c:位元組, w:字, k:千位元組, M:兆位元組, G:吉位元組)。
在搜尋之前我們先用ls(list)指令來檢視下目前目錄下的檔案資訊:
資訊的第五列就是各檔案目錄的大小(位元組),我們通過指定比對條件來搜尋:
經過測試,在開始目錄下,檔案類型為普通目錄,檔案大小大于30個位元組的檔案就是zl.txt了
基于檔案權限和所有權的比對
-perm選項指定了find指比對指定權限的檔案,參數為檔案對應的權限碼。
我們仍然可參考⑥中的所有檔案資訊的第一列,此處需要掌握一定關于檔案權限的知識。如下我們查找權限為644的普通檔案,即使用者可讀寫,組使用者可讀,其他可讀。
也可以用選項-user,比對指定使用者所擁有的檔案,參數為使用者名或者UID
利用find執行相應操作
比如删除檔案,使用-delete選項;删除測試目錄下所有的.txt普通檔案
還可以利用-exec選項結合其他指令對檔案進行更高效的操作,更改檔案的所屬權,複制檔案等,find指令使用一對花括号{}代表檔案名,對于每一個比對到的檔案,find指令會将{}替換成相應的檔案名; 如果-exec的指令有多個參數時,需要注意結尾使用 " \; " 或者 "+",前者表示進行轉義,不然系統會以為是find指令的結尾。
我們将測試目錄下的所有的.txt檔案由使用者lihongbo轉換到使用者litao999,我們必須以root使用者進行此操作,chown用于更改權限:
指定find跳過特定的目錄
使用-prune選項可以跳過我們在搜尋的的一些明顯我們不需要的目錄
跳過了./test1目錄
需要指出的是:選項出現的先後次序我們也應該考慮到内,因為它會影響到整條指令的執行效率。
提示:本文需要掌握關于ls(list), chown(changeowner)等指令,以及關于Linux/Unix檔案系統檔案類型和檔案權限等知識。
原文來自:https://www.linuxidc.com/Linux/2019-10/161165.htm
本文位址:https://www.linuxprobe.com/linux-unix-find.html編輯:何雲豔,稽核員:逄增寶
Linux指令大全:https://www.linuxcool.com/
官方站點:www.linuxprobe.com
Linux指令大全:www.linuxcool.com
Linux系統下載下傳站:www.linuxdown.com
劉遄老師QQ:5604922
Linux技術交流群:193666693
(新群,火熱加群中……)
書籍線上學習(電腦閱讀效果佳):
http://www.linuxprobe.com/chapter-00.html
想要學習Linux系統的讀者可以點選按鈕來了解書籍《Linux就該這麼學》,同時也非常适合專業的運維人員閱讀,成為輔助您工作的高價值工具書!