Хочу распаковать архив 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-файл на него и извлеките его на жесткий диск.