Linux中的find命令:shell
對於Linux而言,有着「一切皆文件」的這一特性,因此相比較windows而言對於文件沒有後綴名,查找是並不輕鬆的的。所以,須要咱們熟悉Linux下的find命令,更快地找到咱們所須要的文件。windows
1. 命令格式
ide
find pathname -options [ -print -exec -ok ...]
spa
2. 命令參數3d
pathname: find 命令所查找的目錄路徑。例如用.來表示當前目錄,用、表示系統根目錄。blog
-print: find命令將匹配的文件輸出到標準輸出。get
-exec: find命令對匹配的文件執行該參數所給的shell命令。it
-ok: 與-exec的做用相同,在執行每個命令以前,都會給出提示,讓用戶判斷是否執行。io
3. 命令選項class
(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