<分区>
我收到了 .tar.gz 类型的文件,但我使用的应用程序只接受 .zip 文件。我需要一种在不丢失任何数据的情况下将 .tar.gz 文件转换为 .zip 的简单方法。
重命名为 .zip 是否可行?我试过了,但是当我点击该文件时,它显示为无效文件。
对此有什么想法或意见吗?
<分区>
我收到了 .tar.gz 类型的文件,但我使用的应用程序只接受 .zip 文件。我需要一种在不丢失任何数据的情况下将 .tar.gz 文件转换为 .zip 的简单方法。
重命名为 .zip 是否可行?我试过了,但是当我点击该文件时,它显示为无效文件。
对此有什么想法或意见吗?
最佳答案
您可以使用与此类似的命令将您的归档文件 foo.tar.gz
转换为压缩归档文件 foo.zip
:
tar xzOf foo.tar.gz |压缩 foo.zip $(tar tf foo.tar.gz)
详细信息:tar xzOf foo.tar.gz
提取 (x
) gzipped (z
) 压缩文件到标准输出(O
)。这里 f
用于提供输入文件名。
标准输入通过管道传输到 zip
,其第一个参数是要生成的压缩文件的名称。以下参数是要压缩的文件列表,我们可以使用 t
命令直接从 tar
获取,在初始 .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)
,但要小心并确保这不会删除您想保留的内容。
有关详细信息,请查看zip
和tar
实用程序的手册页。
关于linux - Linux 上是否有任何命令可以将 .tar.gz 文件转换为 .zip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787941/