find是linux下最棒的命令之一,其查詢功能非常強大。以下將詳細介紹find的大多數用法:
工作方式:其沿着文件層次結構向下遍歷,匹配符合條件的文件,並執行相應的操作。
1.打印文件和目錄列表
當使用-print時,’\n’作為用於分隔文件的定界符。
-print0指明使用’\0’作為定界符來打印匹配的每一個文件名。此方法對於文件名中含有’\n’是非常有效。
但在centos上經實際測試,find直接顯示匹配到的文件,不需要加上-print選項。
2.根據文件名或正則表達式匹配搜索
選項-name指定了文件名所必須配皮的字符串.
3.條件限制,匹配多個條件中的一個
-a:表示且
-o:表示或
-not:表示非
-not用法源於德摩根定律
-path:此參數用於將文件路徑作為一個整體進行匹配。
4.否定參數
find也可以用“!”作為否定參數。
5.基於目錄的深度搜索
find命令在用時會遍歷所有的子目錄,我們可以采用一些參數來限制其遍歷的深度。
6.根據文件類型搜索
linux下的文件類型
文件類型 | 類型參數 |
普通文件 | f |
符號文件 | l |
目錄 | d |
字符設備 | c |
塊設備 | b |
套接字 | s |
Fifo(管道文件) | p |
7.根據文件時間進行搜索
linux文件系統中的每個文件都有三種時間戳:
訪問時間(atime——access time):就是上次訪問這個文件的時間。
改變時間(ctime——change time):就是文件的inode改變的時間(什么是inode?)當你往一個文件中添加數據或者刪除數據的時候,修改文件所有者的時候,鏈接改變的時候,文件的ctime就會發生改變。
修改時間(mtime——modification time):就是文件的內容上一次發生改變的時候的時間。
-atime,-ctime,-mtime可作為find的時間參數。單位是天,這些值通常還帶有+或-:+表示大於,-表示小於。
find的另一個漂亮的特性是-newer參數,我們可以指定一個用於比較時間戳的參考文件,然后找出比參考文件更新的所有文件。
8.基於文件大小的搜索
9.刪除匹配的文件
10.基於文件權限和所有權進行匹配
11.結合find執行命令或動作
12.讓find跳過特定的目錄
13.find與xargs結合使用