gunzip tutti i file .gz nella directory


24

Ho una directory con molti .txt.gzfile (in cui i nomi non seguono uno schema specifico).

Qual è il modo più semplice per gunziploro? Voglio preservare i loro nomi originali, in modo che vadano da whatevz.txt.gzawhatevz.txt

Risposte:


42

Che ne dici di questo?

$ gunzip *.txt.gz

gunzipcreerà un file gunzipped senza il .gzsuffisso e rimuoverà il file originale per impostazione predefinita (vedi sotto per i dettagli). *.txt.gzverrà espanso dalla shell in tutti i file corrispondenti.

Quest'ultimo bit può metterti nei guai se si espande in un elenco molto lungo di file. In tal caso, prova a utilizzare finde -execfare il lavoro per te.


Dalla pagina man 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 sul "nome originale"

gzip può memorizzare e ripristinare il nome file usato al momento della compressione. Anche se si rinomina il file compresso, si può essere sorpresi di scoprire che ripristina nuovamente il nome originale.

Dalla manpage di gzip:

Per impostazione predefinita, gzip mantiene il nome e la data / ora del file originale nel file compresso. Questi sono usati quando si decomprime il file con l' -Nopzione. Ciò è utile quando il nome del file compresso è stato troncato o quando il timestamp non è stato conservato dopo un trasferimento di file.

E questi nomi di file memorizzati nei metadati possono anche essere visualizzati con 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 si desidera conservare il .gzfile, è possibile utilizzare quanto segue: $ gunzip -c inputfile.gz >outputfile


0

Utilizzare questo comando per gunzip (decomprimere i file gz) tutti i file nella directory corrente e mantenere quelli originali:

gunzip -k *.gz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.