给定一个 zip 文件zipfile.zip
,我们知道它包含一个名为text.txt
.
text.txt
有没有办法在不解压的情况下读取内容zipfile.zip
?
答案1
例如,您可以将文件直接转储到标准输出。从技术上讲,您仍然在解压缩它,但不是解压缩到磁盘:
$ unzip -p zipfile.zip text.txt
例如,要计算行数,您可以这样做:
$ unzip -p zipfile.zip text.txt | wc -l
该-c
选项类似,但会在内容之前写入每个提取文件的名称。
答案2
libarchivebsdtar
支持多种存档格式,包括 infozip / pkzip 格式,因此您可以对所有这些格式使用相同的 CLI:
bsdtar xOf zipfile.zip text.txt
转储标准输出上指定的存档成员的内容text.txt
。添加q
在第一个处停止的选项(实际上,存档中给定路径通常只有一个条目)。
您可以对tar
、tgz
、iso
、ar
、cpio
、7z
文件等执行相同的操作。
答案3
如果 zip 文件包含一个文件,您可以使用
zcat f.zip
zmore f.zip
zless f.zip
zgrep regexp z.zip
这些命令也适用于 gzip 压缩文件。 bzip 和 xzip 有类似的命令
bzcat bzmore bzless bzgrep bzdiff ...
xzcat ...
您还可以使用了解压缩格式的命令。例子:
vim f.zip
vim f.bz2 ...
rg -z patter z.zip ## ripgrep recursive grep in compressed files