你如何用枪压缩一个文件并保留 .gz 文件?

Sen*_*Sen 254 linux gz gunzip

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

如何防止它删除文件?

如果不包括此功能,那么是否有替代程序允许这样做?

我正在使用 Ubuntu 9.04

小智 260

您正在寻找:

gzcat x.txt.gz >x.txt
Run Code Online (Sandbox Code Playgroud)

gzcat命令等效于gunzip -c简单地将输出流写入stdout. 这将保持压缩文件不变。所以你也可以使用:

gunzip -c x.txt.gz >x.txt
Run Code Online (Sandbox Code Playgroud)

请注意,在某些系统上 gzcat 也被称为zcatso 运行如下:

zcat x.txt.gz >x.txt
Run Code Online (Sandbox Code Playgroud)

  • 它可能只是您系统上的 zcat 。 (28认同)
  • 仅供参考,我实际上没有 gzcat。我的本地系统或我通过 ssh 连接的系统都没有。所以,我必须使用 gunzip -c (4认同)
  • 谢谢你的回答。在 DOS 中使用 pkunzip 长大,我发现它很奇怪,以至于没有保留文件的选项。特别是像 gzip 这样的工具被如此广泛地使用......只是很奇怪。 (2认同)
  • 保留文件的附加选项确实很好。例如,b(un)zip2 使用类似的语法并允许简单地添加`-k` 来保留原始文件。 (2认同)

小智 60

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

gunzip -c compressed-file.gz > decompressed-file
Run Code Online (Sandbox Code Playgroud)

手册页上的更多详细信息。


ret*_*ile 39

一个更简单的解决方案是使用 gunzip 作为过滤器,如下所示:

gunzip < myfile.gz > myfile
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 13

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

gunzip -c myfile.tar.gz | tar xvf -
Run Code Online (Sandbox Code Playgroud)

以便您获得实际内容。

  • 或者就这样做: tar xzvf myfile.tar.gz (8认同)

Nab*_*.Z. 9

gzip -dk myfile.gz
Run Code Online (Sandbox Code Playgroud)

或者

gunzip -k myfile.gz
Run Code Online (Sandbox Code Playgroud)

注释:

   -k --keep    Keep (don't delete) input files during compression or decompression.
Run Code Online (Sandbox Code Playgroud)


mob*_*mob 5

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

gunzip -c myfile.gz > myfile
Run Code Online (Sandbox Code Playgroud)