Zip Extractor для чтения архивов со стандартного ввода

1855
vect

Как следует из UNZIP(1L)справочной страницы

Архивы, считанные из стандартного ввода, пока не поддерживаются

Существуют ли другие программы CLI, работающие под Linux / cygwin, которые могут извлекать файлы из zip-архивов, читая их из stdin?

2
Хм, 7z был первым, что пришло мне в голову, но это не нужно ... `7z x -si <sample.zip` возвращает` Ошибка: E_NOTIMPL` и документация подтверждает, что чтение zip-файлов из stdin еще не поддерживается. Baris Demiray 8 лет назад 0
`cat archive.zip | tar -xvf -` работает в BSD / OS X, но не с GNU tar. Eir Nym 8 лет назад 0

3 ответа на вопрос

2
Saftever

Репост моего ответа :

BusyBox unzipможет взять стандартный вывод и извлечь все файлы.

wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | busybox unzip - 

Тире после unzip- использовать stdin в качестве входных данных.

Вы можете даже,

cat file.zip | busybox unzip - 

Но это просто избыточно unzip file.zip.

Если ваш дистрибутив использует BusyBox по умолчанию (например, Alpine), просто запустите unzip -.

BusyBox доступен в Cygwin.

0
Hannu

Ответ на ваш вопрос зависит от имеющегося почтового файла.

gunzip < sample.zipбудет работать, но только если был использован совместимый метод сжатия.
Проверьте man gunzipили https://www.google.se/?#safe=off&q=man+gunzip ... или просто попробуйте.

Еще одно ограничение заключается в том, что gzip может обрабатывать только архивы, содержащие не более одного файла. У меня следующая ошибка при попытке извлечь с помощью gunzip из zip-файла, содержащего несколько файлов: `gzip: stdin содержит более одной записи - остальные игнорируются`. vect 8 лет назад 0
0
dave_thompson_085

(улучшено для Windows) Если у вас есть Java JDK (большой, если!)

 get_zip_content | jar x # xv to list while extracting # optionally specify entries to extract; default is all # supply full /path_to_jdk/bin/jar if it's not in PATH 

Я оцениваю это около 7/10 по шкале Клуджа.

Похожие вопросы