如何在不解压缩的情况下列出 zip 存档中的文件?

Posted

技术标签:

【中文标题】如何在不解压缩的情况下列出 zip 存档中的文件?【英文标题】:How can I list the files in a zip archive without decompressing it? 【发布时间】:2013-03-20 07:31:26 【问题描述】:

如何在不解压缩的情况下从命令 shell 中获得相当于 ls 的 .zip 文件(不是 gzip)?也就是说,如何列出我的 .zip 存档中压缩的不同文件?

【问题讨论】:

【参考方案1】:

Use unzip with-l 选项:

unzip -l file.zip

【讨论】:

原始响应中的链接为我获取了 HTTP 403,但手册页包含有关它的信息。 (运行man unzip 或visit this。) unzip -l file.zip 仅列出第一级中的文件和文件夹,而不列出这些文件夹中的文件。 这是不正确的,至少对于我正在使用的版本。它确实给出了一个递归列表。 @perreal 递归列表是什么意思?你的意思是拉链里面是否有拉链? 我的意思是 zip 目录中的文件,@PeterMoore。【参考方案2】:

less 实用程序能够窥视zip 存档。

Less 与 Unix 捆绑在一起,无需安装 als。 输出是可滚动的(分页),并且不会将内容记录到终端(与其他答案中提到的 unzip -l 不同)。

根据https://superuser.com/a/216675/249975,

所以只需使用less filename.zip

【讨论】:

在 Ubuntu 20.04 上测试并且工作正常。但在 MacOS 10.15.7 上不起作用【参考方案3】:

Perreal's answer 是对的,但我建议安装atool(在您的发行版的包管理器中查找它)。然后,对于任何类型的存档文件,bzip2、gzip、tar...您只需要记住一个命令:

als archive_name

【讨论】:

我很确定它适用于 LZMA,是的。从技术上讲,atool 只是一个巧妙的 Perl 脚本,它围绕着您系统上的现有程序。如果您安装了 unrar,它将适用于 rar 文件,如果您有 7zip,atool 将知道 7z,等等...【参考方案4】:

使用此命令无需解压即可查看压缩文件的内容

unzip -l file.zip

我们可以使用的 Gor tar 文件

zcat <archived-file>

【讨论】:

【参考方案5】:
zipinfo -1 filename.zip

它只返回文件名,不再返回示例(响应):

listing.html
my_data.csv
super.txt

【讨论】:

【参考方案6】:

在 Debian/Ubuntu 中使用 lesspipe,它还可以列出许多其他存档类型:

     *.arj
     *.tar.bz2
     *.bz
     *.bz2
     *.deb, *.udeb
     *.doc
     *.gif, *.jpeg, *.jpg, *.pcd, *.png, *.tga, *.tiff, *.tif
     *.iso, *.raw, *.bin
     *.lha, *.lzh
     *.pdf
     *.rar, *.r[0-9][0-9]
     *.rpm
     *.tar.gz, *.tgz, *.tar.z, *.tar.dz
     *.gz, *.z, *.dz
     *.tar
     *.jar, *.war, *.xpi, *.zip
     *.zoo

用法:

lesspipe file.zip

reference

【讨论】:

你能用一句话解释一下lesspipe是什么意思吗?并提供链接?【参考方案7】:

我将添加以下选项,因为我发现这是迄今为止最方便的方法(探索 2GB tar 的内容,包含数万个文件和目录)。

使用archivemount 对我来说是最有用的方法。

执行如下:

mkdir mount-point
archivemount archive.tar.gz mountpoint
cd mount-point

umount mount-point

说明

您需要创建一个空文件夹作为挂载点。最简单的方法是在您拥有存档文件的文件夹中创建该文件夹,如上例所示。尽管您可以在任何您喜欢的地方创建它。只需相应地更改命令中的mount-point

一旦您将cd 放入mount-point 文件夹,您将拥有一个普通的 Linux 文件夹和文件树,可以使用您原本用于探索、查找、cat、编辑、ls 等的任何命令进行探索。 , Linux 中的文件夹和文件。非常方便。

完成后使用umount 卸载存档

注意,您可能需要先安装archivemount。例如,sudo apt install archivemount

为什么我觉得这很有用

我基本上想要一种简单的方法来调查大型 tar 文件的内容。仅仅拥有文件夹和文件名的大量文本输出(数万行)对我来说并不是特别有用。即使在找到通过其他后处理器传输内容的方法之后。

您可以将此方法用于 zip 文件、tar 文件以及使用 gzip、bzip 或 compress 压缩的文件。

archivemount 的详细信息为here。

关于它的好文章是here。

这句话(来自那篇文章)总结了这个工具的灵活性:

[因为 archivemount via FUSE] 通过 Linux 内核公开其文件系统,您可以使用任何应用程序将文件直接加载和保存到此类挂载的档案中。这使您可以对仍在存档文件中的文件使用您最喜欢的文本编辑器、图像查看器或音乐播放器。更进一步,因为 archivemount 还支持某些存档格式的写访问,您也可以直接从存档内部编辑文本文件。

【讨论】:

【参考方案8】:

您也可以使用“zmore archive_name”。 它将列出存档及其内容。

【讨论】:

zmore 是一个文件浏览过滤器,用于 crt 查看压缩文本。如果压缩多个文件,则仅显示第一个文件。 (perreal 的回答很有效,这就是为什么我要使用 zmore 来获取有关压缩文件工具的更多信息)【参考方案9】:

如果您想浏览单个压缩文件,请尝试使用 zless。当 zip 包含多个文件时,这可能不太有用。

根据手册页的描述:

Zless 是一种过滤器,它允许在软拷贝终端上一次一屏地检查压缩或纯文本文件。相当于将环境变量 LESSOPEN 设置为 '|gzip -cdfq -- %s',将环境变量 LESSMETACHARS 设置为 ';*?"()[|&^`#$% =~',然后运行得更少。然而,似乎有足够多的人认为拥有 zless 命令很重要,值得提供它。

其他一些方便的“z”实用程序是 zcat 和 zmore(在前面的答案中提到)、zdiff 和 zgrep。

关于回答原始问题,如何查看一个zip的内容,我更喜欢zipinfo后跟unzip -l。

【讨论】:

【参考方案10】:

要在 Linux 主机上列出/查看压缩文件的内容而不解压缩(以及安装 GZIP 的位置),请使用“zcat”命令。

zcat 压缩文件名 |更多

【讨论】:

这不是我的问题的答案;这是关于 zip,而不是 gzip;而不是对内容进行分类,而是列出 zip 存档中的文件。

以上是关于如何在不解压缩的情况下列出 zip 存档中的文件?的主要内容,如果未能解决你的问题,请参考以下文章

从 ZIP 存档中导出文件列表而不解压缩

如何在不解压缩内容的情况下查看 .tar.gz 存档中特定文件的内容?

HP-UX - 如何在不解压缩的情况下从 tar 存档中读取文本文件?

编辑文件而不解压缩存档

.net ZipFile 类:如何修改存档中的文本文件?

Linux基础命令---unzip