извлекать заархивированные файлы .bz2 из архива .tar с помощью одной команды

1093
FlyingMGET

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

Например:

requested_files_1.tar

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

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

tar -xvf required_files_1.tar | bzip2 -d

1

2 ответа на вопрос

1
Achilleas

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

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

bzip2 -d $(tar xvf requested_files_1.tar) 

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

Это идеальный и самый эффективный кусок кода. Работало без нареканий. было даже лучше, когда я поместил цикл for в круглые скобки и заставил его работать для всех файлов tar в этом каталоге. еще раз спасибо. > bzip2 -d $ (для i в * .tar; сделать tar xvf $ i; готово) FlyingMGET 10 лет назад 0
0
Dude named Ben

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

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

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

#!/bin/sh  for f in `ls *.tar` ; do dir="$" mkdir "$dir" cd $dir tar -xf "../$f" bunzip2 *.bz2 cd .. done 

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