我想解压 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 移动到它并将其提取到你的硬盘上。