Как разархивировать архив tar.gz, в котором архив и т.д?

Есть архив tar.gz, в котором другой архив tar.gz, в этом архиве другой архив tar.gz и так далее. Подскажите, пожалуйста, как распаковать все эти архивы до конечной точки?
  • Вопрос задан
  • 2792 просмотра
Пригласить эксперта
Ответы на вопрос 4
3vi1_0n3
@3vi1_0n3
Если не надо сохранять все промежуточные файлы, то может так?
while [ -f *.tar.gz ]; do filename="$(ls -1 *.tar.gz | head -n 1)"; tar -xvf $filename && rm $filename; done;
Ответ написан
Комментировать
@Studencheskaya32
tar --to-command='tar --to-command="tar -xzvf -" -xzvf -' -xzvf archive.tar.gz
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Studencheskaya32 --to-command -- это прикольно.
Но мне больше нравится решение с -O:
tar -xzvOf archive.tar.gz | tar -xzvO | tar -xzvO | … | tar -xzvO | tar -xzv
Ответ написан
Комментировать
@Maxonoffer
# Создать временную директорию
mkdir tmp

# Распаковать верхний уровень архива
tar -xvf archive.tar.gz -C tmp

# Рекурсивно распаковать все вложенные архивы
while [ $(find tmp -type f -name "*.tar.gz" | wc -l) -ne 0 ]; do
find tmp -type f -name "*.tar.gz" -exec tar -xvf {} -C tmp \; -exec rm {} \;
done

# Переместить распакованные файлы обратно в текущую директорию
mv tmp/* .

# Удалить временную директорию
rmdir tmp
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы