读取压缩文件的内容而不进行提取吗?


153

如何在不解压缩包含在其中的.zip的情况下读取存档中特定文件的内容?我正在使用Linux命令行。

一个较早的问题询问有关查看存档目录的信息。但是对我来说,仅查看存档中文件的列表是不够的,我需要查看存档中文件的内容。



@ fixer1234(及其他):链接的问题询问:“如何查看ZIP存档中的文件?” AFAIC,这与“如何查看文件的内容...?”是相同的问题,不幸的是,许多回答该问题的人将其解释为“我如何查看档案目录?”但是,吉尔斯(自然)的回答拉贾塞卡·托莱蒂(显然)对该问题的回答提供了该问题的答案。
斯科特,

1
@Scott,也许我们应该弄清楚如何合并两个问题,以便两个主题都涵盖在一个主题中,或者将另一个主题重新定位为清楚地与目录有关,然后在两个地方之间移动答案以匹配问题。现在,两者都是杂烩。
fixer1234

@ fixer1234:我同意,在一定程度上。主持人总是告诉我们重复是一件好事,因为重复可以使搜索引擎有更大的接触面(即,搜索找到一个问题的机会更大)。但是有一个难题:如果用户找到一个问题,并且链接不明显(并且没有人查看“链接”和“相关”问题的列表-至少不是搜索结果的随机关注者),则用户仅找到了一部分答案。戴维·波斯蒂尔(DavidPostill)进行了最后表决,以重新提出这个问题。也许你应该和他谈谈。
斯科特(Scott)

@Scott —考虑到提问者将“我如何查看档案目录?”标记为已接受,我必须认为这很可能是该问题的意图。不幸的是,它的措词含糊不清,因此可能意味着任何一种解释。
M. Justin

Answers:


198

unzip -l archive.zip 列出ZIP归档文件的内容,以确保文件在其中。

使用该-c选项可以将命名文件的内容写入stdout(屏幕),而不必解压缩整个存档。

unzip -c archive.zip file1.txt file2.txt | less

对于这种操作,我总是将输出通过管道传输到less,否则整个文件会在屏幕上飞散,然后才能读取它。

BTW zcat非常适合查看.gz文件的内容,而无需先解压缩它们。


8
至少在Ubuntu中,默认情况下配置较少以执行此操作-因此less archive.zip实际上显示了文件列表。
2013年

1
bzcat用于查看bz2文件的内容而无需先解压缩它们……
Justin

3
unzip -c还显示文件名和一些其他消息(将它们发送到stdout)。相反,使用-p仅以二进制格式发送文件。这对于管道
运输

有了您的$LESSOPEN设置为lesspipe,你可以less foo.gz查看解压的内容。(@aviv:这是使less foo.zip管道unzip -l foo.zip自身进入的同一件事)。
彼得·科德斯

unzip -c archive.zip '*' | less可以满足我的需求:获取zip存档的内容。
彼得·科德斯

4

zipinfo是您可能会使用的另一种工具,如果您在unzip不允许使用的锁定系统上使用,这将很有用。


4

如果你只是希望查看图像档案里面,你可以使用齐心或更新MComix看到的图像里面.zip.rar.cbr,和.cbz文件,而无需解压。


2

Emacs从命令行开始,然后使用Zip-Archive模式打开您的zip文件。无需任何Emacs / elisp调整(新用户通常会担心),您将看到文件详细信息,例如zipinfo:模式,长度,日期,时间

然后,您将能够使用标准快捷方式在缓冲区中打开文件,甚至将更改保存回存档中:

  • 在列表中输入文件名以将其打开
  • 编辑并保存 Ctrl-x Ctrl-s
  • 杀死缓冲区Ctrl-k以返回到存档缓冲区并继续

Zip-Archive缓冲区中时,Ctrl-h m用于在帮助视图中获取所有可用的快捷方式。

希望这可以引导您发现Emacs的强大功能



0

我发现less archive.zip这是最简单的方法。


2
less archive.zip不会显示压缩文件的内容,而只会显示压缩档案的内容。
karel

感谢您的澄清,@karel
RobertMyles

我认为您真正想做的与danielcraigie的答案相同。
karel

-1

如果该文件包含在zip存档中,则只需要从存档中提取该文件(可能取决于存档类型,某些档案无法单独提取文件)


是的,但是您可以提取到stdout并将其直接传到寻呼机中。
彼得·科德斯

这不是技术性的答案,它更有可能来自政客或律师。请更具体!(例如,显示命令)
Hola Soy Edu Feliz Navidad '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.