我知道我可以用来unzip -l file.zip
查看 zip 文件的文件列表。
但是 a 在另一个 zip 文件中得到了一个 zip 文件。我尝试过unzip -l file.zip/sub_file.zip
,但失败了。
是否可以在sub_file.zip
不解压的情况下查看文件列表?
答案1
unzip -l file.zip/sub_file.zip
不起作用,因为file.zip
不是目录:它是一个碰巧采用存档格式的常规文件。但是您可以通过安装显示 zip 文件内容视图的文件系统来创建镜像 zip 文件内容的目录。有多种选择,请选择最容易在您的发行版上安装的选项:
例如,使用 archivemount:
mkdir file.d
archivemount file.zip file.d
unzip -l file.d/sub_file.zip
fusermount -u file.d
甚至
mkdir file.d sub_file.d
archivemount file.zip file.d
archivemount file.d/sub_file.zip sub_file.d
ls -lR sub_file.d
fusermount -u sub_file.d
fusermount -u file.d
看仅将压缩存档中的特定文件提取到给定目录,如何递归地 grep 遍历压缩档案?和在递归压缩档案中搜索特定大小的文件有关类似情况下 AVFS 和 fusion-zip 的示例。
答案2
您可以less
使用沃尔夫冈·弗里贝尔的lesspipe
剧本:less file.zip:sub_file.zip
答案3
和zsh
:
$ unzip -l a.zip.zip
Archive: a.zip.zip
Length Date Time Name
--------- ---------- ----- ----
195 2014-08-18 09:38 a.zip
--------- -------
195 1 file
$ unzip -l =(unzip -p a.zip.zip a.zip)
Archive: /tmp/zsh0i0JyZ
Length Date Time Name
--------- ---------- ----- ----
55 2014-08-15 15:24 a
--------- -------
55 1 file
=(...)
是进程替换的第三种形式,它使用临时文件而不是管道(unzip
仅适用于可查找文件)。