como posso extrair vários arquivos gzip no diretório e subdiretórios?

10

Eu tentei ambos gzipe gunzipcomandos, mas recebo um

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Se eu tentar a -fopção, leva muito tempo para trabalhar em um único arquivo e o comando não é executado com sucesso. Estou esquecendo de algo?

Herman Toothrot
fonte
11
O diretório contém arquivos .gz cujos nomes começam com hífens, como -Y.something.gz? Se assim você pode precisar usar o Gnu --bandeira para garantir que eles são tratados como nomes de arquivos em vez de opções, ou seja,gunzip -- *.gz
steeldriver
@steeldriver sim, tenho alguns arquivos começando com -
Herman Toothrot
isso causou pelo menos um dos dois problemas.
Herman Toothrot

Respostas:

16

Você pode usar o comando abaixo.

Vá para o diretório em que seu .gzarquivo está e execute o comando:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Ele extrairá todo o arquivo com o nome original e o armazenará no diretório inicial do usuário atual ( /home/username). Você pode alterá-lo para outro lugar.

EDIT:

gunzip *.gz

Este comando também irá funcionar. Mas, por padrão, ele substitui o arquivo original.

pl_rock
fonte
Você leu o que escrevi na minha pergunta? gunzip * .gz não está funcionando para mim. Mas o loop for funciona, estou intrigado.
Herman Toothrot
mas está funcionando para mim e para outros também porque está mostrando `opção inválida - 'Y' '. Eu acho que ou o seu formato de arquivo não está ok ou você está perdendo alguma coisa no comando.
pl_rock
4

Opção 1 : descompacte vários arquivos usando aspas simples (versão curta)

gunzip '*.gz'

Observe que a *.gzpalavra é colocada entre duas aspas simples, para que o shell não a reconheça como um caractere curinga.

Opção 2 : descompacte vários arquivos usando o shell for loop (versão longa)

for g in *.gz; do gunzip $g; done

A fonte

EDIT:

Eu apenas tentei:

gunzip -dk *.gz

e funcionou.

-ddescompactar e kmanter os arquivos originais.

Bilal
fonte
você verificou gunzip ‘*.gz’ este comando. Eu não sou capaz de executar este comando. dando erro.
pl_rock
use gunzip '*.gz'not gunzip ‘*.gz’ ( ' 'not `` ``))
Bilal
Estou apenas copiando colando seu comando e dando gzip: *.gz: No such file or directorynovo também não está funcionando. você já tentou?
pl_rock
Não funciona gunzip '* .gz' gzip: * .gz: Não
existe
Desculpe, eu não tentei! Eu estou no Windows agora :(
Bilal
0

Usuários do Linux:

Use o seguinte comando para extrair uma quantidade mínima de arquivos .gz no diretório atual e seus subdiretórios

gunzip *.gz

Use o seguinte comando para extrair qualquer número de arquivos .gz no diretório atual e seus subdiretórios

sudo find . -name "*.gz" | xargs gunzip
kmsvignesh
fonte