find命令總結

find命令的基本語法格式:

    find [options] [查找路徑] [查找條件] [處理動作]
       查找路徑:默認爲當前目錄
       查找條件:默認爲查找指定路徑下的所有文件
       處理動作:默認爲顯示


常用查找條件:

-name  glob_expr  根據文件名查找,支持glob通配符:?, *, [], [^]

-name glob_expr 根據文件名查找,但不區分字符大小寫。

-user username  根據用戶名查找

-group groupname  根據用戶組名稱查找

-uid UID  根據用戶的UID查找

-gid GID  根據用戶的GID查找

-nouser  查找沒有屬主的文件

-nogroup  查找沒有屬組的文件

-type TYPE  根據文件類型查找。主要文件類型:f, d, l, b, c, s, p

-size [+|-]SIZE  根據文件的大小查找。常用單位:k, M, G

+SIZE : 表示匹配 x > SIZE 單位大小的文件。例:find –size +5k, 查找當前目錄下文件大小大於5k的文件。

-SIZE : 表示匹配 x <= (SIZE - 1) 單位大小的文件。例:find –size -5k, 查找當前目錄下文件大小小於等於4k的文件。

SIZE : 表示匹配 (SIZE – 1) < x <= SIZE 單位大小的文件。例:find –size 5k, 查找當前目錄下文件大小處於4k和5k之間的文件。


根據時間戳查找(以現在向過去方面爲時間軸):

以天爲單位(time):

-atime [+|-]num  根據過去的訪問時間查找

-mtime [+|-]num  根據過去的修改時間查找

-ctime [+|-]num  根據過去的改變時間查找

以分鐘爲單位(minute):

-amin [+|-]num  根據過去的訪問時間查找

-mmin [+|-]num  根據過去的修改時間查找

-cmin [+|-]num  根據過去的改變時間查找

其中, + :表示過去(num + 1)單位時間之前

-   : 表示過去num單位時間到現在

無符號 : 表示過去 (num + 1) > x >= num 單位時間段


根據權限查找:

-perm [+|-]MODE

MODE :  精確匹配

+MODE :   匹配任何一類用戶的任何一位權限。當某類用戶的的MODE位爲’0’時,表示不檢查該類用戶的權限。例: –perm +001,匹配其它類用戶有執行權限的文件。不檢查文件的屬主和屬組權限,因爲對應的MODE位爲’0’。

-MODE :   匹配每類用戶的權限子集。例: –perm -555,匹配屬主,屬組和其它類用戶都具有讀和執行權限的文件。那麼MODE爲555,755,775,777的文件都匹配。


處理動作

-print    默認動作,將查找到的結果打印在標準輸出上。

-ls          以長格式輸出查找到的所有文件。

-exec COMMAND {} \;     對查找到的所有文件執行COMMAND命令,其中’{}’是命令參數佔位符。find命令把查找到的所有文件一次性地傳遞給 –exec 所指定的命令,但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之後,就會出現 溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。因此,在某些情況下,可以通過 find | xargs COMMAND 的方式來代替 –exec COMMAND 的方式避免這種問題。因爲find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然後是下一批,並如此繼續下去。

例:

find –perm –003 –a –type f –exec chmod o-wx {} \;

find –perm –003 –a –type f | xargs chmod o-wx

有些情況必須利用佔位符才能完成的,就無法用xargs的方式實現了。例:

find –name “*.doc” –exec mv {} {}x  \;     將當期目錄下查找到的所有以後綴”.doc”結尾的文件,改變爲以後綴”.docx”結尾。


-ok COMMAND {} \;        以交換的方式,對查找到的所有文件執行COMMAND命令。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章