圧縮tarアーカイブに含まれる複数のzipファイルからすべてのコンテンツを抽出します。

圧縮tarアーカイブに含まれる複数のzipファイルからすべてのコンテンツを抽出します。

tar.gz複数zipのファイルを含むファイルを受け取りました。以下にコピーされています。

$ rm -Rf zipdir; mkdir zipdir; echo foo > zipdir/a.txt; echo bar > zipdir/b.txt; cd zipdir; zip -m a.zip a.txt ; zip -m b.zip b.txt; cd ..; tar -czvf zipdir.tar.gz zipdir

$ tar tzfO zipdir.tar.gz
zipdir/
zipdir/a.zip
zipdir/b.zip

$ tar xzfO zipdir.tar.gz --no-anchored a.zip | gunzip -c
foo
$ tar xzfO zipdir.tar.gz --no-anchored b.zip | gunzip -c
bar

何らかの理由でgunzip(またはzcat -r)を使用して抽出すると、最初のファイルで停止します。以降のファイルは処理されません。

$ tar xzfO zipdir.tar.gz | gunzip -c
foo

コンテンツのリンク方法みんなSTDOUTからzipファイルが転送されましたか?

$ tar xzfO zipdir.tar.gz | ?
foo
bar

答え1

GNUの使用tar:

$ zcat zipdir.tar.gz | tar x --to-command='zcat $TAR_FILENAME'
bar
foo

これにより、元のファイルを解凍せずにtar.gz各zipファイルの内容を標準出力に抽出します。 (tarの私の順序は反対なので、bar以前はfoo。)

関連情報