2015-06-21 2 views
6

У меня есть огромный архив tarbell с чрезмерно большим или поврежденным error_log, который заставляет архив зависать при попытке извлечь его. Есть ли способ удалить это из архива перед распаковкой или извлечением архива, не извлекая этот конкретный файл на терминал Mac OS X?Как удалить один файл из архива tar.gz

Я нашел этот пост о том, как efficiently-remove-files-from-large-tgz однако, я попробовал --delete флаг, но получил эту ошибку:

tar: Option --delete is not supported 

Есть ли способ:

  1. удалить файл из архив, не распаковывая его?
  2. извлечь архив, но не включать файл?
+0

Какая версия 'tar' вы используете? Если он устарел, попробуйте обновить его до последней версии и проверьте страницу 'man', если' tar' поддерживает '--delete' в качестве опции. –

+1

Параметр '--delete' специфичен для некоторых программ« tar »(в частности, по умолчанию доступен по Linux). Из памяти деформация по умолчанию под macos не поддерживает это. Вам нужно будет прочитать файл man/help или получить программу, поддерживающую такие функции. Все остальное не удается, распакуйте файл '.tar.gz', извлеките все из архива, удалите ненужный файл и перестройте архив. – Peter

+0

Сантош и Питер, большое вам спасибо за ваши ответы. Сантош, не знаете, какая версия tar работает в Mac OS x и как ее обновить. Питер, спасибо. Это не вариант, так как извлечение архива не удается из-за того, насколько велика ошибка_log. – KillerDesigner

ответ

9

Как уже упоминалось в комментариях это невозможно удалить файл, используя деготь, но вы можете исключить файл при извлечении:

tar -zxvf file.tar.gz --exclude "file_to_exclude" 
+0

Работал как шарм. Спасибо. – KillerDesigner

Смежные вопросы