天天看點

Find用法總結

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,如需轉載請自行聯系原作者