Распаковать большой zip-файл на себя

Распаковать большой zip-файл на себя

Хочу распаковать архив 20Gb, но у меня нет еще 20-30Gb свободного места на HDD. Можно ли распаковать этот файл сам на себя?

Таким образом, этот zip-файл будет удален после распаковки, и у меня останется распакованное содержимое.

решение1

Для unzip нет -mпереключателя (переместить), как для zip, но вы можете извлекать файлы из архива по одному и удалять их сразу после извлечения.

Я не очень разбираюсь в OS X, но это работает с Bash в Ubuntu:

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выполняет цикл по выходным данным ..., устанавливает переменнуюфайлв одну строку вывод команды и выполняет ???.

  • unzip ZIPFILE $file && zip -d ZIPFILE $fileизвлекает файл, указанный вфайлиз zip-файла и удаляет его из архива ( zip -d).

    Здесь &&гарантируется, что вторая команда будет выполнена только в случае успешного завершения первой.

  • rm ZIPFILEудаляет (пустой) архив.

  • unset IFSвосстанавливает значение по умолчанию внутреннего разделителя файлов.

решение2

Я считаю, что это невозможно. В вашем случае вам понадобится дополнительный носитель для отправки извлеченного контента; или переместите zip-файл на него и извлеките его на жесткий диск.

Связанный контент