Linux中的find命令:
對於Linux而言,有着“一切皆文件”的這一特性,所以相比較windows而言對於文件沒有後綴名,查找是並不輕鬆的的。因此,需要我們熟悉Linux下的find命令,更快地找到我們所需要的文件。
1. 命令格式
find pathname -options [ -print -exec -ok ...]
2. 命令參數
pathname: find 命令所查找的目錄路徑。例如用.來表示當前目錄,用、表示系統根目錄。
-print: find命令將匹配的文件輸出到標準輸出。
-exec: find命令對匹配的文件執行該參數所給的shell命令。
-ok: 與-exec的作用相同,在執行每一個命令之前,都會給出提示,讓用戶判斷是否執行。
3. 命令選項
(1)-name 按照文件名查找文件。
查找在$HOME目錄下所有符合的log文件。
find ~ -name "*.log" -print
想要在當前目錄及子目錄中查找所有的‘ *.log‘文件:
find . -name "*.log" -print
想要的當前目錄及子目錄中查找文件名以一個大寫字母開頭的文件:
find . -name "[A-Z]*" -print
想要在/etc目錄中查找文件名以host開頭的文件:
find /etc -name "host*" -print
想要查找$HOME目錄中的文件:
find ~ -name "*" -print 或find . -print
要想讓系統高負荷運行,就從根目錄開始查找所有的文件:
find / -name "*" -print
如果想在當前目錄查找文件名以一個個小寫字母開頭,最後是4到9加上.log結束的文件:
find . -name "[a-z]*[4-9].log" -print
(2)-perm 按照文件權限來查找文件。
例:查找user爲可讀可寫可執行,group爲可讀可寫不可執行,other爲可讀不可寫不可執行(764):
(3)-prune 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那麼-prune將被find命令忽略。
例:TEST目錄下查找文件,但不希望在TEST/test目錄下查找
(4)-user 按照文件屬主來查找文件。
例:在在$HOME目錄中查找文件屬主爲root/sust的文件
(5)-group 按照文件所屬的組來查找文件。
-nogroup 查找沒有有效所屬用戶組的所有文件
例:在當前目錄下查找屬於root用戶組的文件和文件系統的根目錄處查找沒有有效所屬用戶組的所有文件
(6)-mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
例:希望在系統當前目錄下查找更改時間在3日以內的文件:find . -mtime -3 -print
爲了在根目錄下查找更改時間在3日以前的文件,可以用:
find / -mtime +3 -print
(7)-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。
例:查找更改時間比文件test.c新但比文件Public舊的文件:
find -newer test.c ! -newer Public -print
(8)-type 查找某一類型的文件,諸如:b - 塊設備文件。d - 目錄。c - 字符設備文件。p - 管道文件。l - 符號鏈接文件。f - 普通文件。
例:在當前目錄下查找普通文件(f),目錄文件(d),符號連接文件(l)
(9)-size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。
例:在當前目錄下查找文件長度爲10塊字節的文件
find . -size 10 -print
find命令從當前目錄開始,查找一個名爲CON.FILE的文件。find . "CON.FILE" -depth -print
(10)-mount:在查找文件時不跨越文件系統mount點
例:從當前目錄開始查找位於本文件系統中文件名以XC結尾的文件
find . -name "*.XC" -mount -print