天天看點

linux 指令之 find指令

find指令

Linux find指令用來在指定目錄下查找檔案。任何位于參數之前的字元串都将被視為欲查找的目錄名。如果使用該指令時,不設定任何參數,則find指令将在目前目錄下查找子目錄與檔案。并且将查找到的子目錄和檔案全部進行顯示。

文法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;      

選項

-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”參數類似,差别在于它針對符号連接配接檢查。

執行個體

将目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。

# find . -name "*.c"      

将目前目錄其其下子目錄中所有一般檔案列出

# find . -ftype f      

将目前目錄及其子目錄下所有最近 20 分鐘内更新過的檔案列出

# find . -ctime -20      

查找/var/logs目錄中更改時間在7日以前的普通檔案,并在删除之前詢問它們:

$ find /var/logs -type f -mtime +7 -ok rm { } ;      

查找前目錄中檔案屬主具有讀、寫權限,并且檔案所屬組的使用者和其他使用者具有讀權限的檔案:

$ find . -type f -perm 644 -exec ls -l { } ;      

為了查找系統中所有檔案長度為0的普通檔案,并列出它們的完整路徑:

$ find / -type f -size 0 -exec ls -l { } ;      

查找/var/logs目錄中更改時間在7日以前的普通檔案,并在删除之前詢問它們:

$ find /var/logs -type f -mtime +7 -ok rm { } ;