如何在不解压的情况下探索嵌套的 zip 文件?

如何在不解压的情况下探索嵌套的 zip 文件?

在 bash 中,我使用unzip -lorder 来显示 zip 的内容而不提取其内容。

我的问题是:如果我有嵌套的 zip 文件并且还想探索其中嵌套 zip 的内容,我应该使用什么命令?

例子:

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

如何对 file2.zip 执行 unzip -l 操作而不提取 file1.zip 和 file2.zip?

答案1

我认为这不是任何常见 bash zip 实用程序的标准行为。您必须事先提取 zip,但您可以编写一个脚本,仅提取 file1.zip 根目录中的 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

答案2

查看这个基于 Java 的实用程序压缩文件用于嵌套 zip 文件。使用以下命令可以轻松提取和压缩嵌套 zip 文件。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"

相关内容