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
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
Antworten:
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.
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