天天看點

find指令使用方法

find:通過周遊指定的目标目錄,實時查找符合指定屬性的檔案

  優點:精确比對進行查找

  缺點:速度略慢

用法:

  find [OPTION] [查找路徑] [查找條件] [處理動作] 

查找路徑:預設為目前路徑

查找條件:預設為指定路徑下的所有檔案

處理動作:預設是在螢幕顯示出來

查找條件:

  -name:查找時差別檔案大小寫,支援glob

  *,?,[],[^]

  -iname:查找時不區分檔案大小寫  

  -user USERNAME:根據檔案屬主查找

  -group USERNAME:根據檔案屬組查找

  -uid UID:根據指定的UID查找

  當原有的使用者被删除時,他之前所建立的檔案的屬主屬組,變成他之前帳号的uig和gid

  -gid GID:根據指定的GID查找

  -nouser:查找沒有屬主的檔案

  -nogroup:查找沒有屬組的檔案

  -type TYPE:根據檔案類型查找

  -size TYPE:根據檔案大小查找

  -atime [+|-]#:最近幾天通路過的檔案

  -mtime[+|-]#: 最近幾天修改過的檔案

  -ctime[+|-]#: 最近幾天改變的檔案

  -amin[+|-]#:  最近幾分鐘内通路過的檔案

  -mmin[+|-]#:  最近幾分鐘内修改過的檔案

  -cmin[+|-]#:  最近幾分鐘内改變過的檔案

  -perm [+|-]MODE:根據權限查找

  -maxdepth:    查找最在深度,例:-maxdepth 1表示隻在目前目錄下找,而不去找目前目錄下的目錄

  -mindepth:    查找最小深度

組合查找條件:

  -a:與    當不帶此參數,同時有2個操作時也表示與

  -o:或者

  !, -not:非

根據檔案類型查找

  -type TYPE:

    f:普通檔案

    d:目錄檔案

    l:符号連結檔案

    b:塊裝置

    c:字元設定檔案

    p:指令名管道

    s:表示套接字檔案

根據檔案大小查找

  -size TYPE:

    常用機關:k,M,G

      +;大于

      -;小于

      什麼都不帶表示為精确的大小

      #UNIT:表示 #-1< x <=# 以2k為例;2-1< x <=2 查找的是0大于1k和小于等于2k的所有檔案都符合

      -#UNIT:x <= #-1  以2k為例:x <= 2-1查找的是小于等于1k的所有檔案

      +#UNIT:x > # 以2k為例:x > 2查找的是大于2k的所有檔案

根據時間戳查找:

    以“天”為機關:

        -atime [+|-]#:最近幾天通路過的檔案

            # <= x < #+1

            比如想要查找3天前通路的檔案 -atime 3

            輸出的結果應該為大于等于3天,小于4天的内容 

            -#: x < #

            +#:x >= #+1

        -mtime[+|-]#:最近幾天修改過的檔案

        -ctime[+|-]#:最近幾天改變的檔案

    以“分鐘”為機關:

        -amin[+|-]#:最近幾分鐘内通路過的檔案

        -mmin[+|-]#:最近幾分鐘内修改過的檔案

        -cmin[+|-]#:最近幾分鐘内改變過的檔案

根據權限查找:

    -perm [+|-]MODE:

    MODE:精确比對權限

        例:find ./ -perm 755   #查找指定權限為755的檔案

    /MODE(在centos6,7上面用/号,表示+号):任何一類使用者的權限隻要包含對其指定的任何一位權限即可

    例:600權限   随便比對一類就可以,要麼屬主是6,要麼屬組是0,要麼其它是0,都比對

    -MODE:每一類使用者的權限都包含對其指定的所有權限,與權限

    例:找到字尾為txt的檔案,并且具有執行的檔案(u,g,o任意一個具有x的都可以)

        #find ./ -name "*.txt" -a -perm /a+x

找到後的處理操作:

    -print:預設動作,列印至螢幕

    -delete:删除查找到的檔案

    -ls:顯示找到的檔案的詳細屬性

    -fls /path/to/somewhere:查找到的所有檔案的長格式資訊儲存至指定檔案中;

    -exec COMMAND {} \;執行其它的操作,沒有互動,直接進行操作

    {}:表示找到的檔案名

    {}:用于引用查找到的檔案名稱自身

    -ok COMMAND {} \;對查找到的每個檔案執行由COMMAND指定的指令;在執行指令前會進行互動式提示

    例:find ./ -name "*.txt" -a -perm /u+x -ok rm -rf {} \;(在執行指令前進行提示)

    注意:find指令會一次性找到所有符合條件的檔案,并一同傳遞給後面的指令,如果後面的指令不能接收較長的參數時,會報錯;解決辦法用xargs指令一條一條的傳遞給COMMAND,而不同時傳遞

用法執行個體:

  例1:同時查找2個檔案

    find ./ -name "3.log" -o -name "4.log"

  例2:同時排除2個檔案

    find ./ ! \( -name "3.log" -o -name "4.log" \)

    find ./ ! -name "3.log" -a ! -name "4.log"

本文轉自激情燃燒的歲月部落格51CTO部落格,原文連結http://blog.51cto.com/liuzhengwei521/1884742如需轉載請自行聯系原作者

weilovepan520

繼續閱讀