1

мне нужно распаковать файлы .bz2 внутри архива .tar (двухэтапная декомпрессия)

Например:

requested_files_1.tar

имеет несколько файлов .bz2 внутри.

Как я могу извлечь их с помощью одной команды в Linux. Я пробовал это, но это не работает.

tar -xvf required_files_1.tar | bzip2 -d

2 ответа2

1

Ваш канал не работает, потому что tar не извлекает файлы в стандартный вывод, а просто перечисляет их. Поэтому bzip2 пытается распаковать список имен файлов в виде обычного текста, который, конечно, не является содержимым сжатого файла (т. е. он использует простой текст в качестве содержимого извлекаемого файла).

Чтобы использовать вывод из tar xvf в качестве списка имен файлов для извлечения bzip2 , вы можете сделать следующее:

bzip2 -d $(tar xvf requested_files_1.tar)

Параметр v для tar здесь необходим для получения списка извлеченных файлов для bzip2.

0

Похоже, дубликат

https://unix.stackexchange.com/questions/4367/extracting-nested-zip-files

Итак, ваш сценарий будет выглядеть примерно так:

#!/bin/sh

for f in `ls *.tar` ; do
    dir="${f%.*}"
    mkdir "$dir"
    cd $dir
    tar -xf "../$f"
    bunzip2 *.bz2
    cd ..
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .