查找文件 find

在系統上按給定的雕件查找符合的的文件 有兩種實現工具: locatefind

這篇博文主要介紹find的用法

find是通過遍歷指定起始路徑下的文件系統層級結構來完成條件查找

其工作特性是:

    ⒈查找速度略慢 -在find命令中可能會經常使用到正則表達式來查找

    ⒉精確查找

    ⒊實時查找

用法:    find [OPTIONS] [查找起始路徑] [查找條件] [相應處理動作]

find有多種查找條件:

根據文件名查找

    -name "pattern"

    -lname "pattern" : 不區分文件名中的大小寫並支持glob風格的通配符

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

    wKiom1Z0J16SqMVgAAB-JEyveOE447.jpg查找/tmp目錄下te開頭的所有文件

根據文件的從屬關係查找

    -user USERNAME 查找屬主爲指定用戶的文件

    -uid 根據UID進行查找 在刪除用戶之後之前該用戶創建過的文件就只有UID 沒有用戶名

        這種情況下可以用uid查找

    wKiom1Z0KOqjagIDAAB068l9yJY426.jpg

    -group GROUPNAME: 查找屬組爲指定組的文件

    -gid 根據gid進行查找

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

    -nogroup : 查找沒有屬組的文件    查找被刪除用戶遺留下來的文件可以用

根據文件類型查找

    -typeTYPE

組合測試 條件 -a/-o 條件

    -a: 與 默認情況下就已經是組合"與"邏輯

    -o: 或

    -not,! :非    查找文件名不是te*的文件

    wKiom1Z0K_7ikHZ9AAB-ET2OepQ228.jpg

根據文件的大小查找

    -size [+|-]#UNIT     常用單位:K,M,G    

    我們要查找一個1G的文件時並不是指文件大小正好等於1G 當查找1G文件的時候這裏是有一定的      誤差存在的 1G=1024M 1M=1024K 所以換算的時候肯定是有誤差的

    #UNIT: (#-1,#]size-1<size<=size    

    如我們要查找500M文件的時候實際上搜出來的文件大小是 499<x<=500 範圍內的文件

    -#UNIT:[0,#-1]<=size-1的

    +#UNIT:(#,無限大)   >size的

6.根據時間戳查找    在時間戳查找中也是有一定的誤差範圍的.同大小一樣

    以'天'爲單位:    

        -atime [+|-]#:

            #:[#,#+1)三天前的文件 範圍爲 3<=時間<4

            -#: (#,0]

            +#: (無限大,#)

    以'分鐘'爲單位

        -amin

        -mmin

        -cmin

7.按權限查找

    -perm [/|-]mode   644權限形式

         mode  : 精確權限查找   664 就必須查找664

           /mode : 任何一類用戶(ugo)中的任何一位(rwx)符合條件即滿足

            9位權限之間存在"或"關係   600  查找用戶6的文件

        -mode : 每一類用戶的權限中的每一位同時符合條件

            9位權限之間存在'與關係'   範圍是664時 777也符合條件

處理動作:       

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

    -ls : 類抑於 ls-l   

      注:ls本身也是一個條件

         -ls 展開的是其前面的條件

        如 find /tmp -ls -user root 與

          find /tmp -user root -ls  兩個命令的結果是不一樣的

        前者是先把 /tmp目錄下所有文件的詳細信息都展示時候查找 root用戶的文件

        後者是先查找屬主爲root的文件 把屬於root的文件詳細展示出來

    -delete:刪除查找到的文件

    -fls /PATH/TO/SOMEFILE 把文件的詳細信息保存至制定文件中

    -ok COMMAND {}\;  :固定格式!!  對查找到的每個文件執行COMMAND表示的命令

    -exec COMMAND {} \;  : 每次操作用戶不確認

     wKiom1Z0NXKBUYuEAAB7yCFnaco261.jpg  

注:不知道是我自己系統配置的原因還是CentOS6.7版本的原因還是我自己本身敲錯命令了

如果各位在運行 -exec或者-ok的時候碰見了以下問題

    wKioL1Z0NmuTOqQWAABDBAkTveA030.jpg

    一直等待輸入  然後我按網上的方法 在最後添加了""  '' ``  " {}\;"等符號

    wKioL1Z0NseQ3W85AACzibHOnJA048.jpg

    出現了遺漏參數的錯誤提示. 對此網上的解決方法基本上是在尾部不同位置加入引用副

    但是我還是運行錯誤 所以試着在"{}" \ 結果在我的機器是能運行成功命令了

    wKiom1Z0NybhVONKAACHxmluF1o127.jpg

    可以試試看.


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