歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> Unix系統命令Find的基本用法簡介

Unix系統命令Find的基本用法簡介

日期:2017/2/25 10:12:35   编辑:Unix基礎知識
Unix中的find 命令不僅能夠簡單地用來定位文件,還可以自動地執行其他UNIX 命令的序列,其中使用所查找到的文件名作為輸入。 UNIX 的 find 命令可以刪除、復制、移動和執行其查找到的文件。另外,使用 -exec 參數可以根據您所需要的 UNIX 命令的序列來自動地運行這些文件。它甚至可以在對任何文件執行這些操作前,進一步讓您進行確認。

  與大多數 UNIX 命令一樣,UNIX find 命令具有一長串令人生畏的選項和開關,它們會阻礙人們深入地學習該命令,但正是因為其范圍廣闊,真正的Explorer並不會被它們嚇倒。一條好的通用原則在簡化一個復雜問題時都會經過漫長的過程。啟動一個xterm,並嘗試執行下面的命令:

$ find . -name *.gif -exec ls {} ;

  -exec 參數中包含了真正有價值的操作。當查找到匹配搜索條件的文件時,-exec 參數定義了將對這些文件進行什麼操作。

  該示例告訴計算機進行如下操作:

  1. 從當前文件夾開始往下搜索,緊跟在 find 之後,使用點號 (.)。

  2. 定位所有名稱以 .gif 結尾的文件(圖形文件)。

  3. 列出所有查找到的文件,使用ls 命令。

  需要對 -exec 參數進行更深入地研究。當查找到匹配搜索條件的文件名時,find 命令執行 ls {} 字符串,用文件名和路徑代替文本 {}。

  假設在搜索中查找到saturn.gif 文件,find 將執行如下所示的命令: $ ls ./gif_files/space/solar_system/saturn.gif 本文余下的內容建立在這條一般原則之上:仔細地使用 find 命令可以讓 UNIX 文件系統的管理工作變得更加容易。例如,如果您使用了 -fstype 參數,find 命令可以根據查找到的文件所處的文件系統的類型來對命令進行相應的處理。

  在 find 命令對查找到的文件執行相應命令前將對您進行提示,這通常是非常有用的,您可以使用 -ok 參數告訴它繼續執行該操作,接下來我們將對其進行介紹。 可選的執行 -ok 是 -exec 參數的一個重要的替代項,它的行為和 -exec 一樣,但它會提示您是否要對文件運行相應的命令。

  假設您想要刪除 home 目錄中的大部分 .txt 文件,但希望能夠逐個文件地執行該操作。像 UNIX 中的 rm 命令那樣的刪除操作是很危險的,因為當使用像 find 這樣的自動化處理方式來查找文件時,它可能一不小心會刪除重要的文件,您也許希望在刪除這些系統查找到的文件之前對其進行仔細檢查。

  下面的命令列出了您的 home 目錄中所有的 .txt 文件。要刪除這些文件,必須在 find 命令通過列出文件名提示您確認操作時輸入 Y 或者 y: $ find $HOME/. -name *.txt -ok rm {} ; 它列出了查找到的每個文件,並且系統將暫停以等待您輸入 Y 或者 y。如果您按下 Enter 鍵,系統將不會刪除該文件。

  -ok 參數允許您控制每個查找到的文件的自動化處理過程,這樣就添加了一種避免自動刪除文件的安全措施。

  如果在使用 -ok 參數時涉及到過多的文件,那麼一個好的方法是先運行帶 -exec 的 find 命令以列出所有將要刪除的文件,然後在經過檢查確保其中不會刪除重要的文件後,再次運行該命令,其中用 rm 代替 ls。 -exec 和 -ok 都非常有用,您必須確定在當前情況下哪一個能夠更好的工作。請記住,安全第一!

  您可以使用 find 命令來清除目錄或子目錄中在正常使用過程中生成的臨時文件,這樣可以節省磁盤空間。要實現該操作,請使用下面的命令: $ find . ( -name a.out -o -name '*.o' -o -name 'core' ) -exec rm {} ; 括號中的文件掩碼 標識出了需要刪除的文件類型,每個文件掩碼的前面都有 -name。該列表可以擴展為包括您需要清除的系統中的任何臨時文件類型。在代碼的編譯和連接過程中,程序員及其工具會生成示例中的那些文件類型:a.out、*.o 和 core。其他的用戶通常也會生成類似的臨時文件,可以使用如 *.tmp、*.junk 等文件掩碼來對命令進行相應的編輯。

  find 命令允許您復制目錄中的全部內容,同時保持每個文件和子目錄的權限、時間和所有權。要完成該操作,需要組合使用 find 和 cpio命令。

Copyright © Linux教程網 All Rights Reserved