2012-10-24 78 views
0

此腳本列出了包含模式的文件(在tar歸檔文件中)的名稱。獲取tar文件中特定文件的內容

tar tf myarchive.tar | while read -r FILE 
do 
    if tar xf test.tar $FILE -O | grep "pattern" ;then 
     echo "found pattern in : $FILE" 
    fi 
done 

我的問題是:

這哪裏是功能記錄,其中$文件是在存檔文件中的一個:

tar xf test.tar $FILE 

回答

2

這通常是在手冊頁記錄,試運行這個命令:

man tar 

不幸的是,Linux沒有最好的手冊頁。這個操作系統有一個tar手冊頁的在線副本:http://linux.die.net/man/1/tar,它很糟糕。但它鏈接到命令info man,它是訪問在GNU世界中廣泛使用的「信息」系統的命令(Linux用戶空間中的許多程序來自GNU項目,例如gcc)。有關於提取特定文件的在線info tar部分的確切鏈接:http://www.gnu.org/software/tar/manual/html_node/extracting-files.html#SEC27

我也可能會推薦來自BSD(例如FreeBSD)或opengroup.org的文檔。實用程序的細節可能會有所不同,但總的來說,它們的行爲相同

例如,有一個從OpenGroup的一些比較舊的,但好男人(XCU意味着 '命令和實用程序' 的單一UNIX規範的,第2版,1997): http://pubs.opengroup.org/onlinepubs/7908799/xcu/tar.html

焦油鍵[文件...]

支持以下操作數:

關鍵 - 的關鍵操作是由函數字母的後面緊跟着零個或多個修改字母。函數字母爲以下之一:

x - 從存檔中提取指定的一個或多個文件。如果一個已命名的文件與其內容已經寫入存檔的目錄相匹配,則該目錄將被遞歸提取。如果系統中不存在檔案中的命名文件,則除了沒有設置set-user-ID和set-group-ID模式外,該文件的創建方式與檔案中的相同,除非用戶有適當的特權。如果這些文件存在,則除上述外,其模式不會更改。所有者,組和修改時間將被恢復(如果可能)。如果未給出文件操作數,則會提取歸檔的全部內容。請注意,如果存檔中有多個具有相同名稱的文件,則最後一個將覆蓋所有較早的文件。

而且要充分認識命令tar xf test.tar $FILE你也應該閱讀有關f選項:

˚F - 使用的第一個文件操作數(或第二,如果已經被指定B)爲存檔的名稱而不是系統相關的默認值。

那麼,您的命令中的test.tar將被f鍵用作存檔名稱;那麼x將使用第二個參數($FILE)作爲從檔案中提取的文件或目錄的名稱。

+0

謝謝,這真棒! – abc