압축된 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.)

관련 정보