find 命令(二)
下面將介紹如何根據文件類型、權限、所有者及操作符來查找匹配文件。根據文件類型來查找文件,使用-type 選項,常見 find 文件類型見下表。
文件類型 | 描述 |
b | 塊設備文件 |
c | 字符設備文件 |
d | 目錄 |
f | 普通文件 |
l | 符號鏈接 |
根據文件權限查找文件,使用-perm 選項。所有者使用-user 選項。另外,find 命令可以通過邏輯操作符來創建更復雜的邏輯關係,例如 find 命令(一)中的例三就使用了操作符-or。find 命令的邏輯操作符見下表。
操作符 | 描述 |
-and | 匹配如果操作符兩邊的測試條件都是真。可以簡寫爲-a。注意若沒有使用操作符,則默認使用 -and |
-or | 匹配若操作符兩邊的任一個測試條件爲真。可以簡寫爲 -o。 |
-not | 匹配若操作符後面的測試條件爲假。可以簡寫爲一個感嘆號(!) |
() | 測試條件和操作符組合起來未更大的表達式。用來控制邏輯計算的優先級。默認情況下,find命令按照從左到右的順序計算。經常有必要重寫默認的求值順序,以得到期望的結果。即使沒有必要,有時候包括組合起來的字符,對提高命令的可讀性是很有幫助的。注意因爲圓括號字符對於shell來說有特殊含義,所以命令行中使用它們,必須用引號引起來,才能作爲實參傳遞給find命令。通常反斜槓字符被用來轉義圓括號字符。 |
(1)常用範例
例一:打印當前目錄下所有權限爲 777 的 php 文件(web 服務器上的 php 文件一般需要執行權限),可以使用如下命令:
find . -type f -name "*.php" -perm 777
例二:打印當前目錄下 root 用戶擁有的所有文件,可以使用如下命令:
find . -type f -user root
例三:打印當前目錄下權限不是 777 和 664 的所有文件,可以使用如下命令:
find . -type f \( ! -perm 777 -and ! -perm 644 \)