文件查找find與locate

文件查找:

find,locate

*** locate路徑名 中包含字符串 即匹配;

依賴於已建立的數據庫  速度較快  類似whatis搜索實現  

    系統自動週期實現

    updatedb手動更新數據庫

    索引構建極消耗資源

 特徵:速度較快  模糊查找  !非實時查找

    -b只匹配路徑名中的基名    

    -c統計符合條件的文檔數量

    -r  BRE 可使用正則表達式

    locate ./  *.repo   本目錄下.repo結尾的文件或目錄

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

    起始路徑:指定目錄下搜索 默認當前目錄;

    查找條件:指定查找標準, 文件名 大小 類型等

    查找動作:對匹配到的對象進行的操作 默認爲輸出至標準輸出 輸出至屏幕

     特徵:查找速度略慢   精確查找   實時查找

    查找條件:

     表達式:選項;標準

     標準:執行結果爲布爾值


1.根據文件名查找:      支持通配符

    -name"patt"     find /etc -name  passwd[[:alnum:]]

    -iname"patt"不區分大小寫       find /etc -iname *passwd


2.根據屬主屬組查找:   find /testdir -uid=1000

    -user   USER  ==>  -uid UID  屬主 爲指定用戶 的文件

    -groupGROUP ==>  -gid GID  屬組 爲指定組 的文件


       存在 用戶被移除 文件無屬主的情況

    -nouser 查找 無屬主的文件       find /testdir -nouser

    -nogroup 查找 無屬組的文件

    

 例  find /testdir -user zjj -type p 

    /testdir下 屬主爲zjj的 管道文件

      find /tmp -not \( -user root -o -iname "*zz*"\)

    /tmp 目錄下 屬主不爲root 且 基名不包含zz的文件




3.根據類型查找:   find /dev -type s -ls

   -type TYPE

    b:塊設備文件

        c:字符設備文件

        d:目錄文件

        f:普通文件

        l:符號鏈接設備 軟鏈接

        p:管道文件

        s:套接字文件

    

4.文件大小查找:

    -size [+|-]#UNIT

       常用單位:K,M,G相對 單位精確查找

    

        #UNIT:(#-1,#]

        -#UNIT:[0,#-1]

        +#UNIT:(#,∞)find /tmp -size +10K   /tmp下大於10K的文件  11K-∞


5.根據時間戳查找:

      以 天   爲單位:

        -atime [+|-]# 

        #:[#,#-1)    前 第3天

        -#:(#,0]    前 3天以內

        +#:(∞,#-1)  3天之前

        -mtime7

        -ctime

      以 分鐘 爲單位

        -amin

        -mmin

        -cmin

 例    find /etc -mmin -3     3分鐘內修改過的文件

 


6.根據權限查找:

    -perm [/|-] mode

        mode精確查找     find -perm 421  查找權限爲421的文件

    -mode任何一類用戶(u,g,o)的 每一位(r,w,x)都大於等於mode

    

 例  find ./ -perm -624  匹配當前目錄含有624權限的文件

        文件權限包含mode即匹配

    /mode任何一類用戶(u,g,o)的 任何一位(r,w,x)符合條件即滿足


 例  find ./ -perm /124  匹配當前目錄u=1 或g=2 或o=4 的文件

         滿足其中之一即匹配

 例  find ./ -perm /011  不管u權限 g或o有寫權限即匹配

組合標準:

    -a  默認的邏輯

    -o  滿足之一則匹配

    -not,!

處理動作:

    -print輸出至標準輸出

    -ls類似對查到的文件執行 ls -l 輸出文件詳細信息

find ./ -d zjj -amin -5 -not -perm /222 -ls

    -delete刪除查找到的文件!

    -fls /PATH將文件詳細的信息 保存至指定文件

    

    -ok CMD {} \;對查找到的 每個文件執行CDM命令 會逐條要求確認

        固定格式\; {}表示查到的所有文件

 例  find ./ -nouser -a -nogroup -ok chown zjj:zjj {} \;

   查找當前目錄下 無屬主無屬組的文件 全部添加屬主屬組zjj

    -exec CMD {} \; 相對-ok 無確認環節 直接執行CMD


 例  find ./ -perm /002 -exec mv {} {}.danger \;

當前目錄下 o有寫權限的 文件名加上.danger後綴

   find查找到所有文件後會 將結果一次行傳遞給命令,有些命令不能接受過長的參數

找到的文件過多會導致命令執行失敗可用  find ...| xargs CMD

 xargs把一個數據流分割爲一些足夠小的塊,以方便過濾器和命令進行處理






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