在Linux上是否有任何命令将.tar.gz文件转换为.zip?

时间:2017-08-21 00:15:02

标签: linux zip tar

我收到了.tar.gz类型的文件,但我使用的应用程序只接受.zip文件。我需要一种简单的方法将.tar.gz文件转换为.zip而不会丢失任何数据。

重命名为.zip会有效吗?我已经尝试了但是当我点击文件时它会将其显示为无效文件。

对此有何想法或意见?

1 个答案:

答案 0 :(得分:8)

您可以使用与此类似的命令将存档foo.tar.gz转换为压缩存档foo.zip

<德尔> tar xzOf foo.tar.gz | zip foo.zip $(tar tf foo.tar.gz)

详细信息:tar xzOf foo.tar.gz提取(x)gzip(z)归档到标准输出(O)。这里f用于提供输入文件名。

标准输入通过管道输入zip,其第一个参数是要生成的压缩文件的名称。以下参数是要压缩的文件列表,我们可以使用tar命令直接从t获取,在初始.tar.gz文件上运行。

编辑:我认为上面的单行可以用来轻松地将tar档案转换为zip文件。一年后左右再次读取命令,结果看起来很糟糕:它只是从tar存档中获取文件的名称,并从原始文件(非压缩)压缩,如果它们仍在磁盘上。我没有看到如何生成简单的单行,因为您显然无法在命令行上向zip提供文件的名称和内容(另请参阅this question and its answers)。

因此我们可能需要两个步骤来执行此操作:首先从tar存档解压缩,然后再次压缩。类似的东西:

tar xzf foo.tar.gz && zip foo.zip $(tar tf foo.tar.gz)

我们还可以添加第三部分来删除临时解压缩的文件:&& rm -r -- $(tar tf foo.tar.gz),但要小心并确保这不会删除您要保留的内容。

有关详细信息,请查看ziptar实用程序的手册页。