weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評(píng)論 - 101, 引用 - 0
          數(shù)據(jù)加載中……

          使用find搜索文件

          可以使用 find 命令在整個(gè)目錄及其子目錄下搜索符合特定準(zhǔn)則的文件。然后,可以在找到的文件中執(zhí)行命令。

           

          查找符合某種模式的文件

          雖然 find 的語(yǔ)法較為復(fù)雜,但它有助于提高使用 HP-UX 的效率。此命令功能強(qiáng)大而且靈活。但是運(yùn)行速度較慢,搜索多個(gè)目錄時(shí)尤其如此。

          假定要顯示當(dāng)前目錄及其子目錄下所有以 d 開(kāi)頭的文件,請(qǐng)輸入:

          find(1)

          $ find . -name 'd*'

          命令中的點(diǎn) (.) 會(huì)使 find 搜索當(dāng)前目錄及其子目錄。文件名后的 -name 選項(xiàng)或文件名模式(在這種情況下為 d*)告知 find 搜索所有符合該模式的文件。在本示例中,find 將搜索所有以 d 開(kāi)頭的文件名。

          注意,d* 要用單引號(hào)括起來(lái) ('d*')。如果在 find 命令中使用文件名模式,必須用單引號(hào)將其括起來(lái),以便 shell 可以對(duì)其進(jìn)行正確地解釋。

           

          查找晚于某個(gè)文件創(chuàng)建日期的文件

          假定您想顯示所有在某個(gè)文件創(chuàng)建日期之后修改過(guò)的文件。要顯示 /home/leslie 目錄及其子目錄下所有晚于 myfile 創(chuàng)建日期的文件,請(qǐng)輸入:

          $ find /home/leslie -newer myfile

          本示例可以理解為:在目錄 /home/leslie 及其子目錄下,查找所有在 myfile 創(chuàng)建日期之后修改過(guò)的文件。(要確定文件的上次修改日期,請(qǐng)使用 ll 命令。)

           

          在文件中運(yùn)行命令

          可以在使用 find 命令查找到的文件中執(zhí)行命令。假定您想刪除當(dāng)前目錄及其子目錄下所有擴(kuò)展名為 .tmp 的文件。請(qǐng)輸入:

          $ find . -name '*.tmp' -exec rm {} \;

          本示例查找當(dāng)前目錄及其子目錄下所有擴(kuò)展名為 .tmp 的文件,并將其顯示在屏幕上,然后將其刪除。-exec 選項(xiàng)會(huì)導(dǎo)致以下命令 (rm) 的執(zhí)行。花括號(hào) {} 代表使用 find 命令找到的文件。結(jié)束 exec 字符串的分號(hào)之前應(yīng)添加一個(gè)反斜線 (\;)。

           

          使用邏輯運(yùn)算符

          find 的語(yǔ)法中包括邏輯布爾運(yùn)算符:NOT、AND 和 OR。

          要查找不符合特定模式的文件,請(qǐng)使用 NOT 邏輯運(yùn)算符,即感嘆號(hào) (!)。使用此運(yùn)算符之后,必須使用選項(xiàng)定義文件屬性,如文件名。然后,將找到具有指定屬性的文件。

          例如,要查找 /tmp 下所有屬于 leslie 的文件,請(qǐng)使用以下命令:

          $ find /tmp \( ! -user leslie \)

          \ 避免了 shell 將圓括號(hào)視為特殊字符的可能性。

          要查找具有兩個(gè)不同屬性的文件,請(qǐng)使用 AND 邏輯運(yùn)算符(表達(dá)式 -a 表達(dá)式)。例如,要查找 / 下所有屬于 leslie 的目錄,請(qǐng)使用以下命令:

          $ find / \( -type d -a -user leslie \)

          要查找具有其中一個(gè)或兩個(gè)屬性的文件,請(qǐng)使用 OR 邏輯運(yùn)算符(表達(dá)式 -o 表達(dá)式)。例如,要?jiǎng)h除一周以來(lái)從未訪問(wèn)過(guò)的以 .o 結(jié)尾或名為 a.out 的所有文件,請(qǐng)使用以下命令:

          $find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
           

          更多信息

          有關(guān)使用 find 命令的詳細(xì)信息,請(qǐng)參閱 find(1) 聯(lián)機(jī)幫助頁(yè)。

          from: http://docs.hp.com/zh_cn/5187-2211/ch02s18.html

          posted on 2005-11-28 13:33 weidagang2046 閱讀(770) 評(píng)論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 大田县| 崇信县| 铁岭市| 盐津县| 高州市| 商丘市| 新晃| 旺苍县| 南汇区| 陆良县| 德清县| 巨野县| 吉首市| 祥云县| 盐源县| 安西县| 攀枝花市| 航空| 台南县| 云林县| 平舆县| 陆河县| 青州市| 泽州县| 湄潭县| 荔波县| 南漳县| 新竹县| 博白县| 茂名市| 汤阴县| 互助| 德昌县| 保德县| 雅江县| 嘉定区| 安岳县| 门头沟区| 鹿邑县| 贵德县| 和田县|