find詳解正則表達式
一.find命令是什麼?ide
實時查找工具,遍歷指定目錄中的全部文件完成查找。工具
二.find的工做特性:oop
實時查找ui
精確查找、支持衆多查找標準spa
查找速度略慢blog
三.find的用法:hadoop
find [OPTIONS][查找路徑][查找條件][處理動做]get
(1)查找路徑:指定具體的搜索目標的起始路徑;默認爲當前目錄;it
(2)查找條件:指定的查找標準,可根據文件名、大小、類型、從屬關係、權限等標準進行。
根據文件名查找:
-name ‘FILENAME’:對文件名進行精確匹配;
支持支持glob風格的通配符:*, ?, [], [^]
-iname ‘FILENAME’:文件名匹配時不區分大小寫;
-regex PATTERN: 基於正則表達式進行文件名匹配;
根據屬主查找:-user USERNAME
根據屬組查找:-group
根據UID查找:-uid UID
根據GID查找:-gid GID
查找沒有屬主的文件:-nouser
查找沒有屬組的文件:-nogroup
按文件類型查找:-type f :普通文件
d:目錄文件
l:符號連接文件
b:塊設備文件
c:字符設備文件
p:管道文件
s:套接字文件
按文件大小查找:
-size [+|-] #UNIT
#UNIT:(#-1, #]
-#UNIT:[0,#-1]
+#UNIT:(#, oo)
經常使用UNIT:k ,M ,G
例:find /etc -size 10k,查找/etc下大於9k小於等於10k的文件 ;
find /etc -size -10k ,查找/etc下小於等於9k的文件 ;
find /etc -size +10k ,查找/etc下大於10k的文件。
組合條件:-a:且
-o:或
-not:非
!A -a !B =!(A -o B)
!A -o !B =!(A -a B)
根據文件的時間戳查找:
以「天」爲單位,以 24 小時爲一個單位。
圖中最右邊爲目前的時間,越往左表示越早以前的時間軸;
3:表示3—4那一天的文件;
-3:表示小於等於3天內的文件;
+3:表示大於等於4天前的文件.
以「天」爲單位:
-atime
-mtime
-ctime
以「分鐘」爲單位:
-amin
-mmin
-cmin
-newer file :file爲一個存在的文件,列出比file還要新的文件名。
根據權限查找:
-perm[/|-] mode
mode:精確權限匹配
/mode: 任何一類用戶(u,g,o,)的權限中的任何一位(r,w,x)符合條件即知足;9位權限之間存在「或」的關係。
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即知足,9位權限之間存在「與」關係。
(3)處理動做:對符合查找條件的文件作出的操做,例如刪除、輸出等操做;默認輸出至標準輸出。
-print:輸出至標準輸出;默認的動做;
-ls:相似於對查找到的文件執行「ls -l」命令,輸出文件的詳細信息;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的全部文件的長格式信息保存至指定文件中;
-ok COMMAND {} \; :對查找到的每一個文件執行由COMMAND表示的命令;每次操做都由用戶進行確認;
-exec COMMAND {} \; :對查找到的每一個文件執行由COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至後面的命令時,是先查找出全部符合條件的文件路徑,並一次性傳遞給後面的命令;可是有些命令不能接受過長的參數,此時命令執行會失敗;以下命令模式可規避此問題:
find | xargs COMMAND
4、練習操做
一、查找/var目錄下屬主爲root,且屬組爲mail的全部文件或目錄;
二、查找/usr目錄下不屬於root, bin或hadoop的全部文件或目錄;用兩種方法;
三、查找/etc目錄下最近一週內其內容修改過,且屬主不是root用戶也不是hadoop用戶的文件或目錄;
四、查找當前系統上沒有屬或屬組,且最近一週內曾被訪問過的文件或目錄;
五、查找/etc目錄下大於1M且類型爲普通文件的全部文件;
六、查找/etc目錄下全部用戶都沒有寫權限的文件;
七、查找/etc目錄至少有一類用戶沒有執行權限的文件;
~]#find /etc -not -perm -111 -type f -ls
八、查找/etc/init.d/目錄下,全部用戶都有執行權限,且其它用戶有寫權限的全部文件;