2

В bash я использую unzip -l , чтобы показать содержимое zip без извлечения его содержимого.

Мой вопрос: какую команду мне следует использовать, если у меня есть вложенные zip-файлы, и я хочу также изучить содержимое вложенных zip-файлов внутри?

Пример:

file1.zip
   |
   |
   ----- textfile.txt
   ----- file2.zip

Как сделать unzip -l для file2.zip без извлечения файла file1.zip и file2.zip?

2 ответа2

1

Я не думаю, что это стандартное поведение любой из распространенных утилит 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
0

Оформите эту утилиту на основе 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .