Linux 上是否有任何命令可以将 .tar.gz 文件转换为 .zip?
Is there any command on Linux to convert .tar.gz files to .zip?
我收到了 .tar.gz 类型的文件,但我使用的应用程序只接受 .zip 文件。我需要一种在不丢失任何数据的情况下将 .tar.gz 文件转换为 .zip 的简单方法。
重命名为 .zip 是否可行?我试过了,但是当我点击文件时,它显示为无效文件。
对此有任何想法或意见吗?
您可以使用类似于此命令的命令将您的存档 foo.tar.gz
转换为压缩存档 foo.zip
:
tar xzOf foo.tar.gz | zip 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
实用程序的手册页。
我收到了 .tar.gz 类型的文件,但我使用的应用程序只接受 .zip 文件。我需要一种在不丢失任何数据的情况下将 .tar.gz 文件转换为 .zip 的简单方法。
重命名为 .zip 是否可行?我试过了,但是当我点击文件时,它显示为无效文件。
对此有任何想法或意见吗?
您可以使用类似于此命令的命令将您的存档 foo.tar.gz
转换为压缩存档 foo.zip
:
tar xzOf foo.tar.gz | zip 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
实用程序的手册页。