unzip 命令成功结束,没有解压文件

unzip command ends successfully without unzipping file

有扩展名为 xxx.zip.gz

的双重压缩文件

在 gunzip 上 - xxx.zip 创建的文件大小为 0.25 GB
在 gunzip 后解压缩 - xxx.zip 文件扩展名不变

解压输出:

Archive:  xxx.zip
  inflating: xxx.txt

还有

echo $? shows 0 

所以,即使 zip 命令成功完成并且文件仍然带有 zip 扩展名,有什么帮助吗?

OS - 太阳OS 5.10

您发现正在创建 xxx.txt,对吗?

unzipgunzip 在处理存档方面有不同 "philosophies"。 gunzip 删除了 .gz 文件,而 unzip 保留了 zip 文件。因此,在您的情况下, zip 正在按设计工作。

我认为你能做的最好的是

 unzip -q xxx.zip && /bin/rm xxx.zip

如果 unzip 没有错误退出,这只会删除 zip 文件。 -q 选项使 unzip 安静,因此您不会收到上面包含的状态消息。

编辑

如你所问when zip file itself is +10 GB in size, then unzip does not succeed

假设您确定有足够的磁盘空间来保存展开后的原始文件,那就很难说了。扩展后的文件有多大?超过2GB?我相信 SunOS5 曾经有 2GB 的文件大小限制,需要将 'large-file' 支持添加到内核和实用程序中。我无法再访问 Sun,因此无法确认。我认为您会找到可以使用 apropos largefile 的地方(假设您的 $MANPATH 设置正确)。

但是 unzip 是否正常工作的基本测试类似于

  if unzip "${file}" ; then
     echo "clean unzip for ${file}, deleting the archive file" >&2
     /bin/rm "${file}"
  else
     echo "error running unzip for ${file}, archive file remains in place" >&2
  fi

(或者我不明白你的用例)。欢迎 post 另一个显示 ls -l xxx.zip.gz xxx.zip 和其他细节的问题,以帮助重建您预期的工作流程。

IHTH.