find命令的工作方式如下:沿着文件層次結構向下遍歷,匹配符合條件的文件,並執行相應的操作。
選項-name的參數指定了文件名所必須匹配的字符串。我們可以將通配符作為參數使用。
而-iname參數則是忽略大小寫。
如果想匹配多個條件中的一個,可以采用OR條件操作:
如果是且的條件則可以什么都不寫,也可以寫-and。
選項-path可以使用通配符來匹配文件路徑或文件。-path將文件路徑作為一個整體進行匹配。
選項-regex基於正則表達式來匹配文件路徑的。
可以用!否定參數的含義。
find命令在使用時會遍歷所有的子目錄。我們可以采用一些深度參數來限制find命令遍歷的深度。-maxdepth和-mindepth就是這類參數。
如果只需在當前目錄中進行檢索,則可以設定最大深度-maxdepth為1:
而最小深度-mindepth則可以用來查找那些距離起始路徑超過一定深度的所有文件。
-type選項可以根據文件類型來進行搜索。
下表顯示了所有的文件類型參數:
文件類型 | 類型參數 |
普通文件 | f |
符號鏈接 | l |
目錄 | d |
字符設備 | c |
塊設備 | b |
套接字 | s |
Fifo | p |
Linux文件系統中的每一個文件都有三種時間戳,如下所示:
· 訪問時間(-atime):用戶最近一次訪問文件的時間。
· 修改時間(-mtime):文件內容最后一次被修改的時間。
· 變化時間(-ctime):文件元數據最后一次改變的時間。
在Linux中沒有所謂“創建時間”的概念。
-atime、-mtime、-ctime可以作為find的時間選項,它們可以整數值給出,單位是天。數值前可以加上加號或者減號,表示大於或者小於多少天。
上圖三行命令分別表示7天之內訪問過、7天之前訪問過以及恰好7天前訪問過三種情況。
對應的-amin,-mmin,-cmin用來表示分鍾。
-newer參數可以找到比參考文件更新的所有文件。
選項-size可以基於文件的大小來進行搜索。
在find命令最后加上-delete選項可以刪除查找到的匹配文件。
選項-perm可以匹配特定權限的文件:
-exec選項可以讓find和其他命令一起執行:
-exec還可以執行sh文件:
注意:查找到多少個文件就執行sh文件多少遍。