gunzip alle .gz Dateien im Verzeichnis

24

Ich habe ein Verzeichnis mit vielen .txt.gzDateien (wobei die Namen keinem bestimmten Muster folgen.)

Was ist der einfachste Weg zu gunzipihnen? Ich möchte ihre ursprünglichen Namen behalten, damit sie von whatevz.txt.gzzu gehenwhatevz.txt

Die unfun Katze
quelle

Antworten:

42

Wie wäre es nur damit?

$ gunzip *.txt.gz

gunziperstellt eine gunzipped-Datei ohne das .gzSuffix und entfernt standardmäßig die Originaldatei (siehe unten für Details). *.txt.gzwird von Ihrer Shell auf alle passenden Dateien erweitert.

Dieses letzte Bit kann Sie in Schwierigkeiten bringen, wenn es zu einer sehr langen Liste von Dateien erweitert wird. Versuchen Sie in diesem Fall, findund -execzu verwenden, um die Aufgabe für Sie zu erledigen.


Von der Manpage 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.

Anmerkung zu 'ursprünglichem Namen'

gzip kann den zur Komprimierungszeit verwendeten Dateinamen speichern und wiederherstellen. Selbst wenn Sie die komprimierte Datei umbenennen, können Sie überrascht sein, dass der ursprüngliche Name wieder hergestellt wird.

Aus der gzip-Manpage:

Standardmäßig behält gzip den ursprünglichen Dateinamen und den Zeitstempel in der komprimierten Datei bei. Diese werden beim Dekomprimieren der Datei mit der -NOption verwendet. Dies ist nützlich, wenn der Name der komprimierten Datei abgeschnitten wurde oder der Zeitstempel nach einer Dateiübertragung nicht beibehalten wurde.

Und diese in Metadaten gespeicherten Dateinamen können auch angezeigt werden mit 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
gertvdijk
quelle
0

Wenn Sie die .gzDatei behalten möchten , können Sie Folgendes verwenden: $ gunzip -c inputfile.gz >outputfile

sumion
quelle
0

Verwenden Sie diesen Befehl, um alle Dateien im aktuellen Verzeichnis zu komprimieren (gz-Dateien zu dekomprimieren) und die Originaldateien beizubehalten:

gunzip -k *.gz
gansvv
quelle