Как исследовать вложенный 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"
Другие вопросы по тегам