Я хочу распаковать архив объемом 20 ГБ, но у меня нет еще 20-30 ГБ свободного места на жестком диске. Можно ли распаковать этот файл поверх себя?
Так что этот zip-файл будет удален после распаковки, и у меня будет распакованный контент.
Переключатель -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
перечисляет содержимое ZIPFILE, одну за другой.
for file in `...`; do ??? done
перебирает выходные данные ...
, устанавливает переменную file в одну строку для вывода команды и выполняет ???
,
unzip ZIPFILE $file && zip -d ZIPFILE $file
извлекает указанный в файле файл из zipfile и удаляет его из архива (zip -d
).
Здесь &&
гарантирует, что вторая команда будет выполнена только в случае успешного завершения первой команды.
rm ZIPFILE
удаляет (пустой) архив.
unset IFS
восстанавливает значение по умолчанию внутреннего разделителя файлов.
Я считаю, что это невозможно. В вашем случае вам понадобится дополнительный носитель для отправки извлеченного контента; или переместите почтовый индекс к нему и извлеките его на жесткий диск.