實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找;
工作特點:
查找速度略慢;
精確查找;
實時查找;
語法:find [options]...[查找條件][處理動作]
查找路徑:指定具體的目標路徑,默認為當前目錄;
查找條件:指定的查找標准,可以是文件名、大小、類型、權限等,默認為找出指定路徑下的所有文件;
根據文件名查找:
-name "文件名稱":支持通配符查找;
-iname "文件名稱":不區分文件大小寫;
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱;
根據屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶的文件;
-group GROUPNAME:查找屬組為指定用戶的文件;
-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 [+|-]num單位
常用單位有:k、M、G
num單位:顯示的是大於num-1,小於等於num,這個區間內的值;
-num單位:顯示的是大於等於0,小於等於num-1區間內的值;
+num單位:大於num至無窮大區間內的所有值;
根據時間戳:
以“天”為單位:
-atime[+|-]num:訪問時間
num:[num,num+1)
+num:[num+1,∞]
-num:[0,num)
-mtime:修改時間
-ctime:改變時間
以“分鍾”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm [+|-]MODE
MODE:精確權限匹配;
+或/MODE:任何一類(u,個,o)對戲iangd權限中只要有一位匹配即可;
-MODE:每一類對象都必須同時擁有為其指定的權限標准;
處理動作:對符合條件的文件做什么操作,默認輸出至屏幕;
-print:默認處理動作,顯示至屏幕;
-ls:類似於對查找到的文件執行“ls -l”命令;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:查找到的所有文件的長格式信息保存至指定文件中;
-ok COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令;
對於每個命令執行之前,都會交互式要求用戶確認;
-exec COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令
{}:用於引用查找到的文件自身,如果查到多個文件,需要對每個文件都執行COMMAND命令,則需要在COMMAND后加上和查找到文件數量相同的{};
注意:find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令。有些命令不能一次性接受過多參數,此時命令可能執行失敗,另一種方式可規避此問題;
find | xargs COMMAND