Wie kann ich mehrere gzip-Dateien in Verzeichnissen und Unterverzeichnissen extrahieren?


10

Ich habe beide gzipund gunzipBefehle ausprobiert , aber ich bekomme beide

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Wenn ich die -fOption ausprobiere , dauert es sehr lange, eine einzelne Datei zu bearbeiten, und der Befehl wird nicht erfolgreich ausgeführt. Vermisse ich etwas


1
Enthält das Verzeichnis .gz-Dateien, deren Namen mit Bindestrichen beginnen, z -Y.something.gz. In diesem --gunzip -- *.gz
Fall

@steeldriver ja ich habe ein paar Dateien beginnend mit -
Herman Toothrot

das verursachte mindestens eines der beiden Probleme.
Herman Toothrot

Antworten:


15

Sie können den folgenden Befehl verwenden.

Wechseln Sie in das Verzeichnis, in dem sich Ihre .gzDatei befindet, und führen Sie den folgenden Befehl aus:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Es extrahiert alle Dateien mit dem ursprünglichen Namen und speichert sie im aktuellen Benutzer-Ausgangsverzeichnis ( /home/username). Sie können es woanders ändern.

EDIT:

gunzip *.gz

Dieser Befehl funktioniert auch. Standardmäßig wird jedoch die Originaldatei ersetzt.


Hast du gelesen, was ich in meiner Frage geschrieben habe? gunzip * .gz funktioniert bei mir nicht. Aber die for-Schleife funktioniert, ich bin verwirrt.
Herman Toothrot

aber es funktioniert für mich und andere auch, warum "ungültige Option -" Y "angezeigt wird. Ich denke, entweder ist Ihr Dateiformat nicht in Ordnung oder Sie vermissen etwas im Befehl.
pl_rock


4

Option 1 : Entpacken Sie mehrere Dateien mit einem einfachen Anführungszeichen (Kurzversion).

gunzip '*.gz'

Beachten Sie, dass das *.gzWort zwischen zwei einfache Anführungszeichen gesetzt wird, sodass die Shell es nicht als Platzhalterzeichen erkennt.

Option 2 : Entpacken Sie mehrere Dateien mit der Shell for-Schleife (lange Version).

for g in *.gz; do gunzip $g; done

Die Quelle

EDIT:

Ich habe gerade versucht:

gunzip -dk *.gz

und es hat funktioniert.

-dzu dekomprimieren und kOriginaldateien zu behalten.


Haben Sie gunzip ‘*.gz’ diesen Befehl überprüft ? Ich kann diesen Befehl nicht ausführen. es gibt Fehler.
pl_rock

benutze gunzip '*.gz'nicht gunzip ‘*.gz’ ( ' 'nicht `'` `)
Bilal

Ich kopiere nur das Einfügen Ihres Befehls und es gibt gzip: *.gz: No such file or directoryneue auch nicht funktioniert. Hast du es versucht?
pl_rock

Es funktioniert nicht gunzip '* .gz' gzip: * .gz: Keine solche Datei oder Verzeichnis
Herman Toothrot

Entschuldigung, ich habe es nicht versucht! Ich bin gerade auf Windows :(
Bilal

0

Linux-Benutzer:

Verwenden Sie den folgenden Befehl, um die Mindestanzahl von .gz-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen zu extrahieren

gunzip *.gz

Verwenden Sie den folgenden Befehl, um eine beliebige Anzahl von GZ-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen zu extrahieren

sudo find . -name "*.gz" | xargs gunzip
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.