Вы не можете сделать это без разархивирования (очевидно), но я предполагаю, что вы имеете в виду, без разархивирования в файловую систему.
unzip
имеет опции -c
и -p
, которые распаковываются в стандартный вывод. -c
выводит имя файла. -p
просто выгружает данные двоичного разархивированного файла в стандартный вывод.
Итак:
unzip -p zipfile.zip path/within/zip.tar.gz | tar zxf -
Или, если вы хотите перечислить содержимое файла tarfile:
unzip -p zipfile.zip path/within/zip.tar.gz | tar ztf -
Если вы не знаете путь к tar-файлу внутри zip-файла, вам нужно написать что-то более сложное, которое использует вывод unzip -c
, распознает строки имени файла в выводе. В этом случае может быть лучше написать что-то на «правильном» языке. Python имеет очень гибкую библиотечную функцию ZipFile
, и большинство основных языков имеют нечто подобное.