可以使用 find 命令在整個目錄及其子目錄下搜索符合特定準則的文件。然后,可以在找到的文件中執行命令。
|
查找符合某種模式的文件 |
 |
雖然 find 的語法較為復雜,但它有助于提高使用 HP-UX 的效率。此命令功能強大而且靈活。但是運行速度較慢,搜索多個目錄時尤其如此。
假定要顯示當前目錄及其子目錄下所有以 d 開頭的文件,請輸入:
find(1)
命令中的點 (.) 會使 find 搜索當前目錄及其子目錄。文件名后的 -name 選項或文件名模式(在這種情況下為 d*)告知 find 搜索所有符合該模式的文件。在本示例中,find 將搜索所有以 d 開頭的文件名。
注意,d* 要用單引號括起來 ('d*')。如果在 find 命令中使用文件名模式,必須用單引號將其括起來,以便 shell 可以對其進行正確地解釋。
|
查找晚于某個文件創建日期的文件 |
 |
假定您想顯示所有在某個文件創建日期之后修改過的文件。要顯示 /home/leslie 目錄及其子目錄下所有晚于 myfile 創建日期的文件,請輸入:
$ find /home/leslie -newer myfile
|
本示例可以理解為:在目錄 /home/leslie 及其子目錄下,查找所有在 myfile 創建日期之后修改過的文件。(要確定文件的上次修改日期,請使用 ll 命令。)
|
在文件中運行命令 |
 |
可以在使用 find 命令查找到的文件中執行命令。假定您想刪除當前目錄及其子目錄下所有擴展名為 .tmp 的文件。請輸入:
$ find . -name '*.tmp' -exec rm {} \;
|
本示例查找當前目錄及其子目錄下所有擴展名為 .tmp 的文件,并將其顯示在屏幕上,然后將其刪除。-exec 選項會導致以下命令 (rm) 的執行。花括號 {} 代表使用 find 命令找到的文件。結束 exec 字符串的分號之前應添加一個反斜線 (\;)。
|
使用邏輯運算符 |
 |
find 的語法中包括邏輯布爾運算符:NOT、AND 和 OR。
要查找不符合特定模式的文件,請使用 NOT 邏輯運算符,即感嘆號 (!)。使用此運算符之后,必須使用選項定義文件屬性,如文件名。然后,將找到不具有指定屬性的文件。
例如,要查找 /tmp 下所有不屬于 leslie 的文件,請使用以下命令:
$ find /tmp \( ! -user leslie \)
|
\ 避免了 shell 將圓括號視為特殊字符的可能性。
要查找具有兩個不同屬性的文件,請使用 AND 邏輯運算符(表達式 -a 表達式)。例如,要查找 / 下所有屬于 leslie 的目錄,請使用以下命令:
$ find / \( -type d -a -user leslie \)
|
要查找具有其中一個或兩個屬性的文件,請使用 OR 邏輯運算符(表達式 -o 表達式)。例如,要刪除一周以來從未訪問過的以 .o 結尾或名為 a.out 的所有文件,請使用以下命令:
$find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
|