Ich habe ein Verzeichnis mit vielen .txt.gz
Dateien (wobei die Namen keinem bestimmten Muster folgen.)
Was ist der einfachste Weg zu gunzip
ihnen? Ich möchte ihre ursprünglichen Namen behalten, damit sie von whatevz.txt.gz
zu gehenwhatevz.txt
Wie wäre es nur damit?
$ gunzip *.txt.gz
gunzip
erstellt eine gunzipped-Datei ohne das .gz
Suffix und entfernt standardmäßig die Originaldatei (siehe unten für Details). *.txt.gz
wird 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, find
und -exec
zu 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.
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
-N
Option 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
Wenn Sie die .gz
Datei behalten möchten , können Sie Folgendes verwenden:
$ gunzip -c inputfile.gz >outputfile
Verwenden Sie diesen Befehl, um alle Dateien im aktuellen Verzeichnis zu komprimieren (gz-Dateien zu dekomprimieren) und die Originaldateien beizubehalten:
gunzip -k *.gz