Как исследовать вложенный zip без выписки?
В Bash я использую unzip -l
для того, чтобы показать содержимое почтового индекса без извлечения его содержимого.
Мой вопрос: какую команду мне следует использовать, если у меня есть вложенные zip -файлы, и я хочу изучить содержимое вложенных zip -файлов внутри?
Пример:
file1.zip
|
|
----- textfile.txt
----- file2.zip
Как сделать unzip -l для file2.zip без извлечения файла file1.zip и file2.zip?
2 ответа
Я не думаю, что это стандартное поведение любой из распространенных утилит bash zip. Вы должны предварительно извлечь zip, но вы можете создать скрипт, который извлекает только zip внутри корня file1.zip и называется unzip -l
а потом убрал за собой:
#!/bin/bash
unzip -l file1.zip
for f in $(unzip -Z1 file1.zip); do
if [ ${f: -4} == ".zip" ]
then
unzip -q -d . file1.zip $f
unzip -l $f
rm $f
fi
done;
Выход:
Archive: file1.zip
Length Date Time Name
--------- ---------- ----- ----
312 2018-05-04 00:52 file2.zip
0 2018-05-04 00:52 textfile.txt
--------- -------
312 2 files
Archive: file2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2018-05-04 00:22 file2
0 2018-05-04 00:52 textfile.txt
--------- -------
0 2 files
Оформите эту утилиту на основе Java nzip для вложенных почтовых индексов. Извлечение и сжатие вложенных почтовых индексов может быть легко сделано с помощью следующих команд. Команда list должна быть полезной для вас:
java -jar nzip.jar -c list -s readme.zip
java -jar nzip.jar -c extract -s "C:\project\readme.zip" -t readme
java -jar nzip.jar -c compress -s readme -t "C:\project\readme.zip"