Eu tenho um diretório com muitos .txt.gz
arquivos (onde os nomes não seguem um padrão específico.)
Qual é a maneira mais simples para gunzip
eles? Eu quero preservar seus nomes originais, de modo que eles vão whatevz.txt.gz
dawhatevz.txt
Que tal exatamente isso?
$ gunzip *.txt.gz
gunzip
criará um arquivo compactado sem o .gz
sufixo e removerá o arquivo original por padrão (veja detalhes abaixo). *.txt.gz
será 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 find
e -exec
fazer 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.
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
-N
opçã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
Se você deseja manter o .gz
arquivo, pode usar o seguinte:
$ gunzip -c inputfile.gz >outputfile
Use este comando para compactar (descompactar arquivos gz) todos os arquivos no diretório atual e manter os originais:
gunzip -k *.gz