Untar único arquivo para o nome desejado

4

Quando eu tar um único arquivo, posso dar ao arquivo tar o nome desejado:

$ tar -cvfj A B

Eu gostaria de fazer o mesmo quando descompactar um único arquivo.

$ tar -xvjf A tmp

(isto é, extraia A em tmp ).

Eu estava tentando fazer isso usando mv :

$ tar -xvjf $1 | mv $1 tmp

Isso não funcionou. $1 pode ser um nome arbitrário, mas os arquivos tar sempre serão um único arquivo, sem pastas (isso é garantido).

    
por Spent Death 02.09.2018 / 22:11

2 respostas

7

Como você parece estar usando tar com bzip2 compactação como forma de compactar um único arquivo, considere usar bzip2 diretamente:

Para compactar um arquivo (cria filename.bz2 , exclui filename ):

bzip2 filename

Para descompactar um arquivo (cria filename , exclui filename.bz2 ):

bunzip2 filename.bz2

Para compactar para um nome de arquivo específico (cria newfilename.bz2 , mantém filename ):

bzip2 -c filename >newfilename.bz2

Para descomprimir para um nome de arquivo específico (cria newfilename , mantém filename.bz2 ):

bunzip2 -c filename.bz2 >newfilename

Veja também o manual de bzip2 em seu sistema ( man bzip2 ).

    
por 02.09.2018 / 22:52
7

Aqui está uma solução:

tar -xjOf my.tar > out

Isso usa a opção -O do tar

-O, --to-stdout: extract files to standard output

e redireciona a saída padrão para um arquivo chamado out . Se o arquivo tiver mais de um arquivo, out será todos os arquivos no arquivo compactado concatenado.

Você provavelmente deve estar usando apenas bzip2 diretamente, pois durante a compactação não armazenará uma árvore de arquivos. Em vez disso, ele simplesmente armazenará os dados dentro do arquivo.

    
por 02.09.2018 / 22:41

Tags