find命令格式與用法node
find:ide
功能說明:查找文件或目錄(實時查找)。oop
補充說明:find指令用於查找符合條件的文件。任何位於參數以前的字符串都將被視爲欲查找的目錄。ui
參 數:spa
-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 將範圍侷限在先行的文件系統中。
3d
find用法實例:對象
查找條件:blog
根據文件名查找:ip
-name"文件名稱":支持使用globhadoop
*, ?, [], [^]
例子 find /etc/ -name
-iname "文件名稱":不區分字母大小寫
根據屬主、屬組查找:
-user USERNAME:查找屬主爲指定用戶的文件;
group GRPNAME: 查找屬組爲指定組的文件;
-uid UserID:查找屬主爲指定的UID號的文件;
-gid GroupID:查找屬組爲指定的GID號的文件;
-nouser:查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
根據文件類型查找:
-type TYPE:
f: 普通文件
d: 目錄文件
l: 符號連接文件
s:套接字文件
b: 塊設備文件
c: 字符設備文件
p: 管道文件
組合條件:
與:-a
或:-o
非:-not, !
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件;
find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls
根據文件大小來查找:
-size [+|-]#UNIT
經常使用單位:k, M, G
根據時間戳:
以「天」爲單位;
-atime [+|-]
-mtime
-ctime
根據權限查找:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配便可;
-MODE:每一類對象都必須同時擁有爲其指定的權限標準;
練習:
一、查找/var目錄下屬主爲root,且屬組爲mail的全部文件或目錄;
# find /var -user root -group mail
二、查找/usr目錄下不屬於root、bin或mageedu的全部文件或目錄;
# find /usr -not -user root -a -not -user bin -a -not -user mageedu
# find /usr -not \( -user root -o -user bin -o -user mageedu \)
三、查找/etc目錄下最週一周內其內容修改過,同時屬主不爲root,也不是hadoop的文件或目錄;
# find /etc -mtime -7 -a -not -user root -a -not -user hadoop
# find /etc/ -mtime -7 -a -not \( -user root -o -user hadoop \)
四、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件或目錄;
# find / -nouser -a -nogroup -a -atime -7
五、查找/etc目錄下大於1M且類型爲普通文件的全部文件;
# find /etc -size +1M -type f
六、查找/etc目錄下全部用戶都沒有寫權限的文件;
# find /etc -not -perm /222
七、查找/etc目錄下至少有一類用戶沒有執行權限的文件;
# find /etc -not -perm -111
八、查找/etc/init.d目錄下,全部用戶都有執行權限,且其它用戶有寫權限的文件;
# find /etc/init.d -perm -113