find詳解

find

 finds是實時查找工具,遍歷指定起始路徑下文件系統層級結構完成文件查找


一、工作特性:

        1、查找速度較慢

        2、精確查找

        3、實時查找

 find [OPTIONS][查找起始路徑][查找條件][處理動作]

       查找起始路徑:指定具體搜索目標起始路徑,默認爲當前目錄

       查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關係權限等等               標準進行,默認爲找出指定路徑下的所有文件

       處理動作:對符號查找條件的文件做出的操作,例如刪除等操作,默認爲輸出至               標準輸出


二、查找條件:

        

1、根據文件名查找:

             -name "pattern"

             -iname "pattern"匹配時忽略大小寫

             支持glob風格的通配符

              *,?,[],[^]

              -regex pattern :基於正則表達式模式查找文件,匹配是整個路徑,                          而非其名

2、根據文件從屬關係查找:

              -user USERNAME:查找屬主指定用戶的所有文件

              -group USERNAME:查找屬組指定組的所有文件

              -uid UID:查找屬主指定的UID的所有文件

              gid UID:查找屬組指定的GID的所有文件

              -nouser:查找沒有屬主的文件

              -nogroup:查找沒有屬組的文件

  例:

  1.查找/var目錄下屬主爲root,且屬組爲gentoo的所有文件或目錄

     ~]# find /var -user root -a -gentoo user -ls

wKiom1ZxQ4KCaBTlAAATDL8oVtk766.png

3、根據文件的類型查找:

              -type TYPE

              f:普通文件

              d:目錄文件

              l:符號鏈接文件

              b:塊設備文件

              c:字符設備文件

              p:管道文件

                  s:套接字文件

4、組合測試:

             與:-a,默認組合邏輯

             或: -o,二個符合一即可

             非:-not,取反

  例:  

  1.查找/tmp目錄下不屬於root, bin或user1的所有文件或目錄;用兩種方法;

     ~]# find /tmp -not -user root -a -not -user bin -a -not -user user1

     ~]# find /tmp -not \( -user root -o -user bin -o -user user1 \) -ls

wKioL1ZxRD-yv2_GAAAVDBLPEvQ412.png

5、據文件的大小查找:

   -size [+|-]#UNIT

   常用單位:k, M, G

   #UNIT:(#-1, #]

   -#UNIT:[0,#-1]

   +#UNIT:(#, oo)

  例:

  1.查找/etc目錄下大於2M且類型爲普通文件的所有文件;

    ~]# find /etc -size +2M -type f -exec ls -lh {} \;

wKioL1ZxRQ_Ac7OyAAAbGOEZFkQ249.png

6、根據時間戳查找:

 (1)以“天”爲單位

   -atime [+|-]#

    #: #= < x < #+1

   -#: x < #

   +#: x >= #+1

   -mtime [+|-]#

   -ctime [+|-]#


 (2)以“分鐘”爲單位

   -amin [+|-]#

   -mmin

   -cmin

  例:

  1.查找/tmp目錄下最近一週內其內容修改過,且屬主不是root用戶也不是hadoop用戶的文    件或目錄;

   ~]# find /tmp -mtime -7 -a -not \( -user root -o -user hadoop \) -ls

wKiom1ZxRXKDBabDAABPoFIh6Gg540.png

7、根據權限查找:

  (1) -perm [/|-]MODE

   MODE: 與MODE精確匹配

  /MODE:任何一類用戶的權限只要能包含對其指定的任何一位權限即可;

  -MODE:每一類用戶的權限都包含對其指定的所有權限;

  例:

  1.查找/etc/init.d/目錄下,所有用戶都有執行權限,且其它用戶有寫權限的所有文件;

   ~]# find /etc -perm -113 -type f -ls

  2.查找/etc目錄下所有用戶都沒有寫權限的文件;

   ~]# find /etc -not -perm /222 -type f -ls

  (2)處理動作:

   -print:默認至標準輸出;默認的動作

   -ls:類似於對查找到的文件執行ls -l命令,輸出文件的詳細信息

   -delete:刪除查找到的文件

   -fls /PATH/TO/SOMEFILE:查找到的所有文件的長格式信息保存至指定文件中

   -ok COMMAND{}\; :對查找到的每個文件執行由COMMAND表示的命令,每次操作都由用戶                進行確認

   -exec COMMAND {}\; :對查找到的每個文件執行由COMMAND表示的命令

 例:

  1.查找/etc目錄下大於1M且類型爲普通文件的所有文件;

   ~]# find /etc -size +1M -type f -exec ls -lh {} \;

注意:find傳遞查找到的文件路徑至後面的命令時,是先查找出所有符合條件的文件路徑,並    一次性傳遞給後面的命令;但是有些命令不能接受過長的參數,此時命令執行會失敗,    另一種方式可規避此問題


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