Como descompactar arquivos em lote com gunzip e manter originais?

0

Eu tenho vários arquivos txt.gz em um diretório que eu gostaria de descompactar todos de uma vez para um monte de arquivos .txt sem me livrar dos originais. MAS eu não os quero na saída padrão - como seria feito com a opção -c. Em vez disso, quero-os como arquivos no mesmo diretório, apenas com o nome do tipo file.txt (como pode ser feito com gunzip -c file.txt.gz > file.txt). Alguém pode ter alguma sugestão? Obrigado !!

    
por Paulina 12.03.2013 / 19:28

2 respostas

3

Use um loop for simples:

 for i in *.txt.gz; do zcat "$i" > "${i%.*}"; done

zcat é equivalente a gunzip -c , mas menor.

A variável $i recebe os nomes de todos os arquivos *.txt.gz no diretório atual (um após o outro). ${i%.*} retira a extensão ( .gz ) do nome do arquivo.

Nota : esta é a sintaxe do bash.

    
por 12.03.2013 / 19:42
2

Você pode usar o p7zip em vez do gunzip, ele manterá seus arquivos originais.

7za e original.txt.gz

Para descompactar vários arquivos, veja a resposta do @mpy.

Atualizar

Conforme o comentário de @ Dennis, coloque o curinga com aspas duplas, o p7zip extrairá todos os arquivos .txt.gz .

7za e "*.txt.gz"
    
por 12.03.2013 / 20:33

Tags