find命令詳解

find命令詳解

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

一、工作特性:

  • 查找速度略慢;
  • 精確查找,只查找文件路徑的基名而非整個路徑;
  • 實時查找;
  • 可能只搜索用戶具備讀取和執行權限的目錄

二、 用法:

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

  • 查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄;
  • 查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關系、權限等等標準進行;默認為找出指定路徑下的所有文件;
  • 處理動作:對符合查找條件的文件做出的操作,例如刪除等操作;默認為輸出至標準輸出;

1. 查找起始路徑

查找時,可以指定搜索層級:

  • -maxdepth level 最大搜索目錄深度,指定目錄為第一等級,其子目錄為2等級;
  • -mindepth level 最小層級目錄深度搜索,指最少搜索多少層
    例子:只顯示目錄的二層,
    ~]$find -maxdepth 2 -mindepth 2 -name file

2、查找條件

即表達式,由選項和測試組成;測試結果通常為布爾型(”true”, “false”)

①根據文件名和inode查找:

  • -name “pattern”:區分字符大小寫
  • -iname “pattern”:不區分字符大小寫
    注意:此處pattern支持glob風格的通配符;例如 *, ?, [], [^]
  • -samefile name 相同inode好的文件
  • -links n 鏈接數為n文件
  • -regex pattern:基于正則表達式模式查找文件,匹配是整個路徑,而非基名;一般不用;

② 根據文件從屬關系查找:

  • -user USERNAME:查找屬主指定用戶的所有文件;
  • -group GRPNAME:查找屬組指定組的所有文件;
  • -uid UID:查找屬主指定的UID的所有文件;
  • -gid GID:查找屬組指定的GID的所有文件;
  • -nouser:查找沒有屬主的文件(不用跟用戶名);
  • -nogroup:查找沒有屬組的文件(不用跟組名);

③ 根據文件的類型查找:

  • -type TYPE:
    f: 普通文件
    d: 目錄文件
    l:符號鏈接文件
    b:塊設備文件
    c:字符設備文件
    p:管道文件
    s:套接字文件

④ 組合測試:

  • 與:-a, 默認組合邏輯,可??;
  • 或:-o
  • 非:-not, !
  • 德.摩根定律

    • (非P)或(非Q)=非(P且Q)
      +(非P)且(非Q)=非(P或Q)
      注意:使用摩根定律時括號加上轉義符\
      例子:
      !A -a !B = !(A -o B)
      !A -o !B = ! (A -a B)

⑤ 根據文件的大小查找:

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

    • #UNIT:(#-1, #]
      如:6k 表示(5k,6k]
    • -#UNIT:[0,#-1]
      如:-6k 表示[0,5k]
    • +#UNIT:(#, oo)
      如:+6k 表示(6k,無窮)

⑥ 根據時間戳查找:

以“天”為單位:

  • -atime [+|-]#

    • #:[#, #-1)
    • -#:(#, 0]
    • +#:(oo, #-1]
  • -mtime
  • -ctime

以“分鐘”為單位:

  • -amin
  • -mmin
  • -cmin

⑦ 根據權限查找:

  • -perm [/|-]mode

    • -mode:精確權限匹配;每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足;9位權限之間存在“與”關系;非0權限位的“與”;只有當前面有/或者-時候,0表示不關注
    • /mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;9位權限之間存在“或”關系;非0權限位的“或”;
      find -perm 755 會匹配權限模式恰好是755的文件
      只要當任意人有寫權限時,find-perm+222就會匹配
      只有當每個人都有寫權限時,find-perm-222才會匹配
      只有當其它人(other)有寫權限時,find-perm-002才會匹配
      #### ⑧ 查找比某個文件新或比某個文件舊
  • -newer:選項
    格式為:-newer newest_file_name ! -newer oldest_file_name

3、處理動作:

  • -print:輸出至標準輸出;默認的動作;
  • -ls:類似于對查找到的文件執行“ls -l”命令,輸出文件的詳細信息;
  • -delete:刪除查找到的文件;
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
  • -ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;此處{}表示引用找到的文件的文件名;
  • -exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;此處{}表示引用找到的文件的文件名;

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

原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/71346

(0)
oranixoranix
上一篇 2017-03-19
下一篇 2017-03-19

相關推薦

  • 設計模式(十)享元模式Flyweight(結構型)

    相對于其它模式,Flyweight模式在PHP實現似乎沒有太大的意義,因為PHP的生命周期就在一個請求,請求執行完了,php占用的資源都被釋放。我們只是為了學習而簡單做了介紹。 1. 概述 面向對象技術可以很好地解決系統一些靈活性或可擴展性或抽象性的問題,但在很多情況下需要在系統中增加類和對象的個數。當對象數量太多時,將導致運行代價過高,帶來性能下降等問題。…

    Linux干貨 2015-07-08
  • 20160803作業-用戶組和權限管理

    http://note.youdao.com/yws/public/redirect/share?id=46f06331b737c6d08a0e8c9c3d49ac9e&type=false

    Linux干貨 2016-08-08
  • Linux 6.8系統安裝操作過程

      首先按照好vmware 虛擬機,安裝過程忽略。       虛擬機新建完畢后,在虛擬機設置框中,選擇硬件cd/dvd,右側勾選使用iso磁盤文件,點擊瀏覽,選擇所需鏡像文件,點擊確定按鈕。      然后,單擊啟動虛擬機   &nbsp…

    2017-05-21
  • 計算機網絡知識,腳本編程_第八周練習

    Q1:請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:網橋(Bridge)是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條背板總線的。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Sw…

    Linux干貨 2016-12-25
  • 8-2 用戶組和權限管理

    用戶組和權限管理     本節主要是:su、passwd、chage、chown、chgrp、chmod、umask等命令及文件的三種普通權限和三種特殊權限     切換用戶或以其他用戶身份執行命令:su su [options…] [-] [user[args…]] 切換用…

    Linux干貨 2016-08-07
  • Vim編輯器解析

    vim編輯器 概述:   VIM即ViIMproved:vi的增強版 ,vim是模式化的編輯。   vi:Visual lnterface,是一種文本編輯器,所謂文本編輯數據是基于字符編碼的文件,常見的編碼 有ASCII編碼,UNICODE編碼。 種類:   行編輯器:所謂行編輯器是指一行行來編輯處理的工具   全屏編…

    Linux干貨 2016-08-10

評論列表(1條)

  • All well
    All well 2017-03-19 16:54

    寫的不錯哦,盼盼,很地道,全面,點個贊

欧美性久久久久