大きな zip ファイルを解凍する

大きな zip ファイルを解凍する

20GB のアーカイブを解凍したいのですが、HDD にさらに 20~30GB の空き容量がありません。このファイルをそれ自体に解凍することは可能ですか?

そうすれば、解凍後に zip ファイルが削除され、解凍されたコンテンツが残ります。

答え1

-munzip には zip のような (移動) スイッチはありませんが、アーカイブからファイルを 1 つずつ抽出し、抽出後すぐに削除することができます。

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の内容をリストしますZIPファイル、一行ずつ。

  • for file in `...`; do ??? doneの出力をループし...、変数を設定するファイルコマンドの出力を 1 行にまとめて実行します???

  • unzip ZIPFILE $file && zip -d ZIPFILE $file指定されたファイルを抽出しますファイルzipファイルから抽出し、アーカイブから削除します(zip -d)。

    ここでは、&&最初のコマンドが正常に終了した場合にのみ 2 番目のコマンドが実行されるようにします。

  • rm ZIPFILE(空の)アーカイブを削除します。

  • unset IFS内部ファイル区切り文字のデフォルト値を復元します。

答え2

それは不可能だと思います。あなたの場合は、抽出したコンテンツを送信するための追加のストレージ メディアが必要になります。または、zip をそのメディアに移動して、ハード ドライブに抽出します。

関連情報