將大 zip 檔案解壓縮到自身之上

將大 zip 檔案解壓縮到自身之上

我想解壓縮 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 移至該資料夾並將其解壓縮到硬碟上。

相關內容