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

标签 linux zip tar

<分区>

我收到了 .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),但要小心并确保这不会删除您想保留的内容。

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

关于linux - Linux 上是否有任何命令可以将 .tar.gz 文件转换为 .zip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787941/

相关文章:

linux - 为什么 shell 输出重定向到随机名称文件?

linux - Bash 选项卡完成改变了行为

c++ - glibc 在 RHEL 5 中损坏了双链表

php - php中从二级路径获取所有zip文件

python - Python 的 tarfile.open 需要 close() 吗?

php - 登录服务器的sftp脚本

java - 动态生成的zip下载结果损坏的文件

c++ - 使用 C/C++ 在 Windows (XP/2003) 上创建 ZIP 文件

archive - IBM i PASE tar - 排除文件或目录

bash - 为什么这个 tar 命令在 ssh 调用中作为字符串传递时会失败?