Ho una directory con molti .txt.gz
file (in cui i nomi non seguono uno schema specifico).
Qual è il modo più semplice per gunzip
loro? Voglio preservare i loro nomi originali, in modo che vadano da whatevz.txt.gz
awhatevz.txt
Ho una directory con molti .txt.gz
file (in cui i nomi non seguono uno schema specifico).
Qual è il modo più semplice per gunzip
loro? Voglio preservare i loro nomi originali, in modo che vadano da whatevz.txt.gz
awhatevz.txt
Risposte:
Che ne dici di questo?
$ gunzip *.txt.gz
gunzip
creerà un file gunzipped senza il .gz
suffisso e rimuoverà il file originale per impostazione predefinita (vedi sotto per i dettagli). *.txt.gz
verrà 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 find
e -exec
fare 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.
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'
-N
opzione. 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