extrai arquivos .bz2 arquivados dentro de um arquivo .tar com um único comando

1

eu preciso descompactar arquivos .bz2 dentro de um arquivo .tar (descompressão de dois passos)

Por exemplo:

requested_files_1.tar

tem vários arquivos .bz2 dentro.

Como posso extraí-los com um único comando no linux? Eu tentei isso, mas não funciona.

tar -xvf requested_files_1.tar | bzip2 -d

    
por FlyingMGET 16.04.2014 / 17:50

2 respostas

1

Seu canal não funciona porque o tar não está extraindo os arquivos para o stdout, apenas listando-os. O bzip2, portanto, tenta descompactar a lista de nomes de arquivos como texto simples , o que obviamente não é o conteúdo de um arquivo compactado (isto é, está usando o texto simples como o conteúdo do arquivo a ser extraído). / p>

Para usar a saída de tar xvf como uma lista de nomes de arquivos para bzip2 extrair, você pode fazer o seguinte:

bzip2 -d $(tar xvf requested_files_1.tar)

A opção v para tar aqui é necessária para listar os arquivos extraídos para o bzip2.

    
por 16.04.2014 / 19:04
0

Parece uma duplicata de

link

Assim, seu script seria algo assim:

#!/bin/sh

for f in 'ls *.tar' ; do
    dir="${f%.*}"
    mkdir "$dir"
    cd $dir
    tar -xf "../$f"
    bunzip2 *.bz2
    cd ..
done
    
por 16.04.2014 / 18:26