it-swarm.com.de

gunzip alle .gz-Dateien im Verzeichnis

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

Was ist der einfachste Weg, sie zu gunzip? Ich möchte ihre ursprünglichen Namen beibehalten, damit sie von whatevz.txt.gz bis whatevz.txt

25
The Unfun Cat

Wie wäre es nur damit?

$ gunzip *.txt.gz

gunzip erstellt eine Gunzipped-Datei ohne das Suffix .gz und entfernt standardmäßig die Originaldatei (Details siehe unten). *.txt.gz Wird von Ihrer Shell auf alle übereinstimmenden 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, find und -exec Zu verwenden, um die Arbeit 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.

Hinweis zum 'ursprünglichen 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 Option -N Verwendet. Dies ist nützlich, wenn der komprimierte Dateiname abgeschnitten wurde oder wenn der Zeitstempel nach einer Dateiübertragung nicht beibehalten wurde.

Und diese in Metadaten gespeicherten Dateinamen können auch mit file angezeigt werden:

$ 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
44
gertvdijk

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

0
sumion

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

gunzip -k *.gz
0
gansvv