2012-08-24 39 views
-1

在Unix中,如何在目錄樹(包括其所有子目錄)中創建一個壓縮存檔(tar.gz),包括具有給定擴展名的所有文件?將所有<ext>文件複製到tar.gz文件

事情是這樣的:

ls -lR | grep <ext> | tar xxxx file.tar.gz 
+0

爲什麼我得到一個downvote?我研究過它,它很有用。 –

回答

1

您的意思是:

find -name '*.ext' -exec tar -rzf file.tar.gz {} + 

  1. -name '*.ext'找到的所有文件後綴.ext
  2. -exec ... {} +手段與作爲參數傳遞的所有找到的文件執行該命令,
  3. tar -rzf file.tar.gz意味着文件追加到file.tar.gz。如果參數列表太長,則需要「追加」,並且需要拆分tar調用。 -r用於附加,-z用於gzip-compress,-f用於指定存檔文件名。

請注意,如果file.tar.gz已經存在,您首先需要rm

+0

mmm我收到一個錯誤-bash-3.00 $ find -name'* .sas' find:非法選項-n find:[-H | -L]路徑列表謂詞列表 –

+0

這是什麼樣的系統?你可以嘗試在'find'後追加'.'。即'查找。 -name'* .ext''。 –

+0

它現在可以工作,但它看起來並不壓縮,我確實使用了-rcf –

0
find your_path -type f -name "*.your_ext" | xargs tar -czf your_file.tar.gz 
+0

你有沒有理由誤用'xargs'? –

+0

你爲什麼認爲這是一種濫用? – fsenart

+0

因爲這是一種誤用。你正在使用兩種工具來配合'find'能夠做的事情。 'man find',grep for'xargs'。 –

相關問題