# Создать временную директорию
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