1. 程式人生 > >Linux中find命令

Linux中find命令

find命令用來在指定目錄下查詢檔案。格式為“find [查詢路徑] 尋找條件 操作“ 任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。 多次提到“在Linux中一切皆檔案“,接下來就要見證這句話的力量了。在Linux系統中,搜尋工作一般都是通過find命令來完成的,它可以使用不同的檔案特性作為尋找條件(如檔名、大小、修改時間、許可權等資訊),一旦匹配成功則預設將資訊顯示到螢幕上。以下為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<範本樣式>:此引數的效果和指定“-path”引數類似,但忽略字元大小寫的差別; -iregex<範本樣式>:此引數的效果和指定“-regexe”引數類似,但忽略字元大小寫的差別; -links<連線數目>:查詢符合指定的硬連線數目的檔案或目錄; -iname<範本樣式>:指定字串作為尋找符號連線的範本樣式; -ls:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出; -maxdepth<目錄層級>:設定最大目錄層級; -mindepth<目錄層級>:設定最小目錄層級; -mmin<分鐘>:查詢在指定時間曾被更改過的檔案或目錄,單位以分鐘計算;
-mount:此引數的效果和指定“-xdev”相同; -mtime<24小時數>:查詢在指定時間曾被更改過的檔案或目錄,單位以24小時計算; -name<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式; -newer<參考檔案或目錄>:查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄; -nogroup:找出不屬於本地主機群組識別碼的檔案或目錄; -noleaf:不去考慮目錄至少需擁有兩個硬連線存在; -nouser:找出不屬於本地主機使用者識別碼的檔案或目錄; -ok<執行指令>:此引數的效果和指定“-exec”類似,但在執行指令之前會先詢問使用者,若回答“y”或“Y”,則放棄執行命令; -path<範本樣式>:指定字串作為尋找目錄的範本樣式; -perm<許可權數值>:查詢符合指定的許可權數值的檔案或目錄; -print:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字串; -print0:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行; -printf<輸出格式>:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式可以自行指定; -prune:不尋找字串作為尋找檔案或目錄的範本樣式; -regex<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式; -size<檔案大小>:查詢符合指定的檔案大小的檔案; -true:將find指令的回傳值皆設為True; -typ<檔案型別>:只尋找符合指定的檔案型別的檔案; -uid<使用者識別碼>:查詢符合指定的使用者識別碼的檔案或目錄; -used<日數>:查詢檔案或目錄被更改之後在指定時間曾被存取過的檔案或目錄,單位以日計算; -user<擁有者名稱>:查詢符和指定的擁有者名稱的檔案或目錄; -version或——version:顯示版本資訊; -xdev:將範圍侷限在先行的檔案系統中; -xtype<檔案型別>:此引數的效果和指定“-type”引數類似,差別在於它針對符號連線檢查。

重點講一下-exec引數重要作用。這個引數用於把find命令搜尋到的結果交於緊隨其後的命令作進一步處理,它十分類似於管道符技術,並且由於find命令對引數的特殊要求,因此雖然exec是長格式形式,但依然只需要一個(-)。

find /* -group mail -exec cp -rp {} /mnt/ \;
-group mail	找出組所在mail的檔案
-exce		將找到的結果,進一步處理
-cp rp {} /mnt/		拷貝find的結果到/mnt
{}	表示find命令搜尋出的每一個檔案
\;	命令結尾必須是\;

在這裡插入圖片描述

	部分命令詳細說明
	-maxdepth 最深幾層	##find/etc -maxdepth 2 -name passwd
	-mindepth 最淺幾天層
	-not
	-user
	-group		##find/mnt -not -user root -a -group lee
	-a	並且
 	-o	或者
 	-size<檔案大小>:查詢符合指定的檔案大小的檔案;
	-size 20k     找出大小20k的檔案
	-size -20k	找出比20k小的檔案
	-size +20k	找出比20k大的檔案
	-ctime 10       找出10天被改過的檔案
	-ctime -10	找出10天內改過的檔案
	-ctime +10	找出10天外改過的檔案
	-cmin +|-10	分鐘
	-cmin 10
       -perm -004   	找出o含有r許可權的檔案
       -perm 444    	找出許可權為444的檔案
       -perm /444   	或,找出滿足許可權rrr三個條件中任意一個的檔案

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述