gunzip的默认行为是将.gz文件解压缩后将其删除。

如何防止其删除文件?

如果不包括此功能,则

我正在使用Ubuntu 9.04

评论

使用以下命令:gunzip -k

哪些gunzip具有-k选项?我没有人。

@ Znik,gzip / gunzip 1.6及更高版本具有-k选项。

#1 楼

您正在寻找:

gzcat x.txt.gz >x.txt


gzcat命令等效于gunzip -c,该命令仅将输出流写入stdout。这将使压缩文件保持不变。因此,您也可以使用:

gunzip -c x.txt.gz >x.txt


请注意,在某些系统上,gzcat也称为zcat,因此应这样运行:

zcat x.txt.gz >x.txt


评论


感谢你的回答。在DOS中与pkunzip一起成长时,我发现它是如此奇怪,以至于没有保留文件的选项。尤其是像gzip这样的工具被广泛使用...简直太奇怪了。

–森
09-09-23 14:59

仅供参考,我实际上没有gzcat。我的本地系统或ssh都没有进入过的系统。所以,我必须使用gunzip -c

–森
09-09-23 16:15

它可能只是您系统上的zcat。

–user23307
2010-1-31 14:52

保留文件的其他选择确实不错。例如,b(un)zip2使用类似的语法,并允许简单地添加-k来保留原始文件。

– schnaader
2011年9月8日20:19



您还可以将行别名gzcat =“ gunzip -c”添加到.bashrc中

–詹姆斯·金斯伯里(James Kingsbery)
2012年3月30日在20:04

#2 楼

您可以使用gunzip的-c选项将输出写入标准输出,然后将其通过管道传输到您选择的文件:

gunzip -c compressed-file.gz > decompressed-file


手册上的更多详细信息。

评论


顺便说一句,请注意,上面提到的手册页列出了-k选项,这意味着保留输入文件。也许这适用于BSD版本,但不适用于我的,所以-c解决方案似乎是正确的。

–user49260
2010-09-13 22:01

#3 楼

一个更简单的解决方案是将gunzip用作这样的过滤器:

gunzip < myfile.gz > myfile


评论


我认为这是最干净的方法,因为gunzip永远不知道它要获取的文件,它所看到的只是数据流,因此不可能更改原始文件。

–沃尔夫
16 Dec 9'在1:11

可能值得注意的是,您也可以通过管道传递输出,例如:gunzip
–提莫西·佐恩(Timothy Zorn)
20 Jun 7'23:10



#4 楼

如果它实际上是一个tar包(.tgz或.tar.gz扩展名),那么与其像到目前为止的所有答案一样重定向到文件,不如将其通过管道传输到tar,如下所示: >
gunzip -c myfile.tar.gz | tar xvf -


,以便您获取实际内容。

评论


或只是做:tar xzvf myfile.tar.gz

–约翰·埃洛夫森(Joakim Elofsson)
09-09-23 17:39

是的,但前提是您具有GNU tar。例如,Solaris随附的一个不支持z选项。

– Alex
09年9月23日在20:01

@JoakimElofsson值得一枚奖牌!

–乔诺
20-10-10在16:17

#5 楼

gzip -dk myfile.gz




gunzip -k myfile.gz


评论:


   -k --keep    Keep (don't delete) input files during compression or decompression.



评论


您正在使用哪个版本的gunzip?来自GNU的gzip 1.5没有-k选项

– Rho Phi
20-2-3在12:01

gzip:无效选项-'k'

–普特尼克
20-2-6在9:44

@RhoPhi gzip和gunzip版本:1.10,我在Windows中使用git bash(MINGW64)

– Nabi K.A.Z.
20-2-10在10:18



@Putnik我使用1.10

– Nabi K.A.Z.
20-2-10在10:18

#6 楼

使用-c选项将文件解压缩到标准输出。它不会触摸原始文件。

gunzip -c myfile.gz > myfile


#7 楼

Gnu tar可以读取gzip文件:tar -zxsvf myfile.tar.gztar -jxzvf myfile.tar.bz2(用于压缩的tar文件)。