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

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

评论

具有superuser.com/questions/216617/zip-linux-view-files-in-archive的重复性

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

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

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

@Scott —考虑到提问者标记了“我如何查看存档目录?”答案被接受后,我不得不认为这可能是该问题的意图。不幸的是,它的措词含糊不清,因此可能意味着任何一种解释。

#1 楼

unzip -l archive.zip列出了ZIP归档文件的内容,以确保文件在其中。
使用-p选项将命名文件的内容写入stdout(屏幕),而无需解压缩整个归档文件。
unzip -p archive.zip file1.txt | less
对于这种操作,我总是将输出通过管道传递到less,否则整个文件会在屏幕上飞起来,然后才能读取它。
BTW zcat非常适合查看.gz文件的内容而无需解压缩首先。
编辑:将此答案更改为使用-p而不是-c-p逐字节提取文件,而-c打印文件名并可以进行EOL转换。另外,unzip -p可以提取多个文件,但不会像cat那样以给定的顺序输出。

评论


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

– aviv
13年3月24日在20:30

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

–贾斯汀E
2014年11月12日19:37

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

– Juan Calero
15年3月24日在10:02

将$ LESSOPEN设置为lesspipe,就可以减少foo.gz来查看解压缩的内容。 (@aviv:这是同一件事,它使更少的foo.zip可以将unzip -l foo.zip传递到自身中)。

– Peter Cordes
17年1月4日,11:57



unzip -p ...将在不将文件名插入输出流中的情况下归档文件中文件的内容

– jvd10
19年5月24日在21:19



#2 楼

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

#3 楼

如果您只想查看存档中的图像,则可以使用Comix或更新的MComix来查看.zip.rar.cbr.cbz文件中的图像而无需提取。

#4 楼

在命令行中启动Emacs,并以Zip-Archive模式打开zip文件。
无需进行任何Emacs / elisp调整(新用户通常会担心),您将看到类似zipinfo的文件详细信息:模式,长度,日期,时间

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


在列表中输入文件名将其打开
Ctrl-x Ctrl-s编辑并保存

杀死缓冲区Ctrl-k返回到存档缓冲区并继续运行

Zip-Archive缓冲区中时,请使用Ctrl-h m获取所有内容帮助视图中提供的快捷方式。

希望这可能会导致您发现Emacs的强大功能

#5 楼

您可以使用vim列出zip / rar / tar归档文件的内容:

vim archive.zip



顺便说一句:这是相同的问题。

#6 楼

更好的方法是使用zmorezless,例如

zmore syslog.2.gz


#7 楼

我发现less archive.zip是执行此操作的最简单方法。

评论


less archive.zip不显示压缩文件的内容,而仅显示压缩文件的内容。

–卡雷尔
19年4月25日在11:16

感谢您的澄清,@ karel

– RobertMyles
19-4-25在11:21



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

–卡雷尔
19年4月25日在11:22

#8 楼

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

评论


是的,但是您可以提取到stdout并将其直接传到寻呼机中。

– Peter Cordes
17年1月4日在12:08

这不是技术性的答案,它更有可能来自政客或律师。请更具体! (例如,显示命令)

– Hola Soy Edu Feliz Navidad
18年8月21日在15:56