Я хочу распаковать архив объемом 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 восстанавливает значение по умолчанию внутреннего разделителя файлов.
Я считаю, что это невозможно. В вашем случае вам понадобится дополнительный носитель для отправки извлеченного контента; или переместите почтовый индекс к нему и извлеките его на жесткий диск.