1、按檔案名查找
find 目錄路徑 -name 檔案名|通配符
2、按大小查找
find 目錄路徑 -size 1500c 查找檔案大小為1500bytes的檔案,字元c 表示機關是bytes;
find 目錄路徑 -size +10000c "+"表示系統隻列出大于指定大小的檔案,“-”表示小于
find 目錄路徑 -empty 查找系統中為空的檔案[夾]
size:表示檔案大小,+表示大于某個數,-表示小于某個數。c表示機關是位元組,你可以将c換成k,M,G
3、按時間查找
find / -amin -10 # 查找在系統中最後10分鐘通路的檔案
find / -atime -2 # 查找在系統中最後48小時通路的檔案
find / -mmin -5 # 查找在系統中最後5分鐘裡修改過的檔案
find / -mtime -1 # 查找在系統中最後24小時裡修改過的檔案
find / -cmin -5 # 查找在系統中最後5分鐘裡被改變狀态的檔案
find / -ctime -1 # 查找在系統中最後24小時裡被改變狀态的檔案
通路過用amin,修改過用mmin,檔案狀态改變過用cmin
精确到分鐘的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
在5分鐘之内的用-5,在5分鐘以前(以上)的用+5
4、按使用者查找:
find / -user fred # 查找在系統中屬于FRED這個使用者的檔案
find / -group cat # 查找在系統中屬于 groupcat的檔案
find / -nouser # 查找在系統中屬于廢棄使用者的檔案
find / -not -user reda #查找在系統中不屬于FRED這個使用者的檔案
find / -gid 501 #查找系統中屬于組id為501的檔案
find / -false #查找系統中總是錯誤的檔案
find / -type b
檔案類型:
b 塊(緩沖)裝置
c 字元裝置
d 目錄
p 有名管道(FIFO)
f 規則檔案
l 符号鍊結
s SOCKET
5、通過檔案特征進行查找
-false 查找系統中總是錯誤的檔案
-fstype type 查找系統中存在于指定檔案系統的檔案,例如:ext3
-depth 通過檔案深度進行查找
-follow 根據軟連接配接方式進行查找(預設情況下對連接配接不進行查找)
6、組合方式:
find /tmp -size +10000000c -and -mtime +2 # -and
find / -user fred -or -user george # -or 在/tmp目錄中查找屬于fred或者george這兩個使用者的檔案
find /tmp ! -user panda // ! 在/tmp目錄中查找所有不屬于panda的檔案
另一種寫法:
find /tmp ! \( -user 0 -o -user 500 -o -user 501 \) -exec ls -l {} \;
find /data/dbk/ ! -type b -ctime +5 \( ! -iname ".*" ! -iname "dbk" \) -exec rm -rf {} \; (-iname 忽略大小寫)
find / -name "httpd.conf" -ls #查找并顯示檔案的方法
find . -name * -exec rm -f {} \;
-exec 參數後面跟的是 command指令,注意如下幾點:
command指令的終止,使用 ';' (分号)來判定,在後面必須有一個 ';'
';'需要用'\'來轉義 ,是以指令整體形式為: -exec rm -f {} \;
'{}',使用{}來表示檔案名,也就是find前面處理過程中過濾出來的檔案,用于command指令進行處理
find / -exec grep "Hello" {} \;查找所有包含 hello 字元的檔案
7、find 與exec xargs 是常用組合
在使用find指令的-exec選項處理比對到的檔案時, find指令将所有比對到的檔案一起傳遞給exec執行。但有些系統對能夠傳遞給exec的指令長度有限制,這樣在find指令運作幾分鐘之後,就
會出現溢出錯誤。錯誤資訊通常是“參數列太長”或“參數列溢出”。這就是xargs指令的用處所在,特别是與find指令一起使用。
find指令把比對到的檔案傳遞給xargs指令,而xargs指令每次隻擷取一部分檔案而不是全部,不像-exec選項那樣。這樣它可以先處理最先擷取的一部分檔案,然後是下一批,并如此繼續下去
在有些系統中,使用-exec選項會為處理每一個比對到的檔案而發起一個相應的程序,并非将比對到的檔案全部作為參數一次執行;這樣在有些情況下就會出現程序過多,系統性能下降的問題
因而效率不高;而使用xargs指令則隻有一個程序。
find . -name \* -type f -print | xargs grep "hostnames" \用來取消find指令中的*在shell中的特殊含義。
在shell中用任何方式删除檔案之前,應當先檢視相應的檔案,一定要小心!
可以使用安全模式:
-ok command; 給使用者指令執行操作,根據使用者的Y 确認輸入執行
find . -name "*.conf" -mtime +5 -ok rm { } \;
8、按權限查找
find ~ -type f -perm 4755 -print #查找$HOME目錄下suid位被設定,檔案屬性為755的檔案列印出來。
find . -perm -007 -print
9、忽略某個目錄
find /apps -name "/apps/bin" -prune -o -print 在/apps目錄下查找檔案,但不希望在/apps/bin目錄下查找
10、查找比某個檔案新或舊的檔案
find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
find指令能夠查找更改時間比檔案age.awk新但比檔案belts.awk舊的檔案:
本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1307732,如需轉載請自行聯系原作者