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
。)