20GB のアーカイブを解凍したいのですが、HDD にさらに 20~30GB の空き容量がありません。このファイルをそれ自体に解凍することは可能ですか?
そうすれば、解凍後に zip ファイルが削除され、解凍されたコンテンツが残ります。
答え1
-m
unzip には 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 をそのメディアに移動して、ハード ドライブに抽出します。