Linux文件查找之Find詳解

Linux文件查找之find詳解

  • find:實時查找工具,通過遍歷指定路徑下文件系統層級結構完成文件查找
  • 工作特性:
    查找速度略慢
    實時查找
    精確查找
  • find用法:find [option]...[查找路徑] [查找條件] [處理動作]
    查找起始路徑:指定具體搜索目標起始路徑,默認認爲當前目錄
    查找條件:指定的查找標準,可以根據文件名,文件類型,從屬關係,
    權限等標準進行,默認爲找出指定路徑下的所有文件
    處理動作:對符合查找條件的文件做出的操作,例如:刪除等操作,默認
    爲輸出至標準輸出
  • 查找條件:
    (1)根據文件名查找:
    -name "文件名稱":支持使用globbing字符
    -iname"文件名稱":查找時忽略字符大小寫
    :匹配任意長度的任意字符
    ?:匹配單個字符
    -regex pattern:基於正則表達式查找文件,匹配是整個路徑而非其名
    (2)根據文件從屬關係查找:
    -user USERNAME:根據文件的屬主查找
    -group GROUPNAME:根據文件的屬組查找
    -uid UID:查找屬主指定的UID的所有文件;
    -gid GID:查找屬組指定的GID的所有文件;
    -nouser:查找沒有屬主的文件
    -nogroup:查找沒有屬組的文件
    (3)根據文件類型:
    -type TYPE:根據文件類型查找
    f:普通文件
    d:目錄文件
    l:符號文件
    b:塊設備
    c:字符設備
    s:套接字文件
    p:命名管道
    (4)根據文件大小查找:
    -size [+|-] #UNIT: 常用單位:k,M,G
    #UNIT:(#-1, #]
    -#UNIT:[0,#-1]
    +#UNIT:(#, oo)
    (5)根據時間戳查找:
    按照atime(文件最後訪問時間),mtime(文件的最後修改時間),ctime(文件最後改變時間)三個變量來查詢:
    以天爲單位:
    -atime[+|-]#:
    #:[#, #-1) :最後訪問時間在#天前(大於等於#天前,小於#-1天前)
    等價於最後訪問時間與當前的時間差 大於 (#-1)
    24小時,小於等於 #24小時
    -#:[#-1, 0]:最後訪問時間在#天以內,不包括24小時前的那一刻。
    等價於最後訪問時間與當前的時間差小於 #
    24小時
    +#:(oo, #]:最後訪問時間在#天以前的。包括#-1天前
    等價於最後訪問時間與當前的時間差大於等於 #*24小時
    以分鐘爲單位:
    -amin,-mmin,-cmin
    (6)根據權限查找:
    -perm [/|-] mode:
    mode:精確權限匹配
    /mode:任何一類用戶(u,g,o)的權限中任何一位(r,w,x)符合條件即滿足,9位權限之間存在“或”關係
    -mode:每一類用戶(u,g,o)的權限中每一位(r,w,x)都符合條件即滿足,9位權限存在“與”關係
    (7)組合條件查詢:
    與:-a,同時滿足
    或:-o,滿足一個即可
    非:-not,!,條件取反
    -not A -a -not B = -not (A -o B)
    -not A -o -not B = -not (A -a B)
  • 處理動作:
    -print:輸出至標準輸出(默認)
    -ls:類似於對查到的文件執行"ls -l"
    -delete:刪除查找的文件
    -fls /PATH/TO/SOMEFILE:把查找到所有文件的長格式保存至指定文件中
    -ok COMMAND {} \;對查找的文件執行COMMAND表示的命令,,每次操作都由用戶進行確認
    -exec COMMAND {} \; 對查找的文件執行COMMAND表示的命令

         注意:find傳遞查找的文件路徑至後面的命令時,是先查找所有符合條件的文件路徑,並一次性傳遞給後面的命令,但是有些命令不能接受過長的參數,此時命令會執行失敗,另一種方式可規避此問題:
               find | xargs COMMAND
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章