web-dev-qa-db-ja.com

tar.gzアーカイブから単一のファイルを削除する方法

非常に大きなまたは破損したerror_logを含む巨大なtarbellアーカイブがあり、アーカイブを抽出しようとするとハングします。 Mac OS X端末で特定のファイルを抽出せずにアーカイブを解凍または抽出する前に、アーカイブからこれを削除する方法はありますか?

efficiently-remove-files-from-large-tgz の方法に関するこの投稿を見つけましたが、-deleteフラグを試しましたが、次のエラーを受け取りました:

tar: Option --delete is not supported

方法はありますか:

  1. 解凍せずにアーカイブからファイルを削除しますか?
  2. アーカイブを抽出しますが、ファイルを除外しますか?
14
KillerDesigner

コメントで述べたように、tarを使用してファイルを削除することはできませんが、抽出時にファイルを除外できます。

tar -zxvf file.tar.gz --exclude "file_to_exclude"
17
msfoster

次のように再パッケージできます:

tar -czvf ./new.tar.gz --exclude='._*' @old.tar.gz

._*すべて削除 ._files ですが、フルパス、ディレクトリ、ファイル名など、好きなパターンを使用できます。

0
voices