我想解壓縮 20Gb 存檔,但我沒有另外 20-30Gb 的 HDD 可用空間。是否可以將該文件解壓縮到自身上?
這樣解壓縮後該 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 移至該資料夾並將其解壓縮到硬碟上。