gunzip todos os arquivos .gz no diretório


24

Eu tenho um diretório com muitos .txt.gzarquivos (onde os nomes não seguem um padrão específico.)

Qual é a maneira mais simples para gunzipeles? Eu quero preservar seus nomes originais, de modo que eles vão whatevz.txt.gzdawhatevz.txt

Respostas:


42

Que tal exatamente isso?

$ gunzip *.txt.gz

gunzipcriará um arquivo compactado sem o .gzsufixo e removerá o arquivo original por padrão (veja detalhes abaixo). *.txt.gzserá expandido pelo seu shell para todos os arquivos correspondentes.

Esse último bit pode causar problemas se ele se expandir para uma lista muito longa de arquivos. Nesse caso, tente usar finde -execfazer o trabalho para você.


Na página do manual gzip(1):

gunzip takes a list of files on its command line and  replaces  each  file
whose  name  ends  with  .gz, -gz, .z, -z, or _z (ignoring case) and which
begins with the correct magic number with an uncompressed file without the
original  extension.

Nota sobre 'nome original'

O gzip pode armazenar e restaurar o nome do arquivo usado no momento da compactação. Mesmo se você renomear o arquivo compactado, poderá se surpreender ao descobrir que ele restaura o nome original novamente.

Na página de manual do gzip:

Por padrão, o gzip mantém o nome do arquivo original e o carimbo de data e hora no arquivo compactado. Eles são usados ​​ao descompactar o arquivo com a -Nopção Isso é útil quando o nome do arquivo compactado foi truncado ou quando o registro de data e hora não foi preservado após a transferência do arquivo.

E esses nomes de arquivos armazenados nos metadados também podem ser visualizados com file:

$ echo "foo" > myfile_orig
$ gzip myfile_orig 
$ mv myfile_orig.gz myfile_new.gz 
$ file myfile_new.gz 
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug  5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz        # gunzip without -N
$ ls myfile_*
myfile_new

$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz 
# gunzip with -N
$ gunzip -N myfile_new.gz     # gunzip with -N
$ ls myfile_*
myfile_orig

0

Se você deseja manter o .gzarquivo, pode usar o seguinte: $ gunzip -c inputfile.gz >outputfile


0

Use este comando para compactar (descompactar arquivos gz) todos os arquivos no diretório atual e manter os originais:

gunzip -k *.gz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.