将大型 zip 文件解压到其自身上

将大型 zip 文件解压到其自身上

我想解压 20Gb 的档案,但我没有另外 20-30Gb 的硬盘可用空间。是否可以将此文件解压到自身上?

因此,解压后该 zip 文件将被删除,而我将获得解压后的内容。

答案1

与 zip 不同,unzip没有-m(移动)开关,但您可以逐个从存档中提取文件,并在提取后立即删除它们。

我不太了解 OS X,但这可以与 Ubuntu 上的 Bash 一起使用:

IFS=$'\n'

for file in `zipinfo -Z1 ZIPFILE`; do
    unzip ZIPFILE $file && zip -d ZIPFILE $file
done

rm ZIPFILE

unset IFS
  • IFS=$'\n'将内部字段分隔符设置为换行符,因此包含空格的文件名将得到正确处理。

  • zipinfo -Z1 ZIPFILE列出内容压缩文件,一行一行。

  • for file in `...`; do ??? done循环遍历输出...,设置变量文件将命令的输出合并到一行并执行???

  • unzip ZIPFILE $file && zip -d ZIPFILE $file提取指定的文件文件从 zip 文件中将其取出并从存档中删除(zip -d)。

    这里&&确保只有第一个命令成功终止时才会执行第二个命令。

  • rm ZIPFILE删除(空)档案。

  • unset IFS恢复内部文件分隔符的默认值。

答案2

我认为这是不可能的。对于你的情况,你需要一个额外的存储介质来发送提取的内容;或者将 zip 移动到它并将其提取到你的硬盘上。

相关内容