... es sei denn, dies führt zu einem "argmuent too big" -Fehler. In diesem Fall möchten Sie find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzipInstanzen auf jeweils 50 Argumente beschränken (und sie parallel ausführen).
Toby Speight
22
@techedemic ist korrekt, fehlt aber '.' um das aktuelle Verzeichnis zu erwähnen, und dieser Befehl durchläuft alle Unterverzeichnisse.
Es gibt offensichtlich mehr als einen Weg, dies zu tun.
# This will find files recursively (you can limit it by using some 'find' parameters.
# see the man pages
# Final backslash required for exec example to work
find . -name '*.gz' -exec gunzip '{}' \;
# This will do it only in the current directory
for a in *.gz; do gunzip $a; done
Ich bin mir sicher, dass es auch andere Möglichkeiten gibt, aber dies ist wahrscheinlich die einfachste.
Und um es zu entfernen, führen Sie einfach eine rm -rf *.gzim entsprechenden Verzeichnis aus
ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz
Dann versuche es:
ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm
Dadurch werden alle .tar.gz-Dateien im aktuellen Verzeichnis entpackt und anschließend alle .tar.gz-Dateien gelöscht. Wenn Sie eine Erklärung wünschen, wird das "|" Nimmt das stdout des Befehls davor und verwendet es als stdin des Befehls danach. Verwenden Sie "man command " ohne Anführungszeichen, um herauszufinden, was diese Befehle und Argumente bewirken. Oder Sie können online recherchieren.
.gz
Datei muss nicht unbedingt ein Archiv sein. In diesem Fall hätten Sie beim Ausführen nichts zu löschengzip -d file.gz
.Antworten:
Dies sollte es tun:
quelle
find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip
Instanzen auf jeweils 50 Argumente beschränken (und sie parallel ausführen).@techedemic ist korrekt, fehlt aber '.' um das aktuelle Verzeichnis zu erwähnen, und dieser Befehl durchläuft alle Unterverzeichnisse.
quelle
Es gibt offensichtlich mehr als einen Weg, dies zu tun.
Ich bin mir sicher, dass es auch andere Möglichkeiten gibt, aber dies ist wahrscheinlich die einfachste.
Und um es zu entfernen, führen Sie einfach eine
rm -rf *.gz
im entsprechenden Verzeichnis ausquelle
Extrahieren Sie alle gz-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen:
quelle
Wenn Sie eine einzelne Datei extrahieren möchten, verwenden Sie:
gunzip file.gz
Es wird die Datei extrahieren und die .gz-Datei entfernen.
quelle
for foo in *.gz do tar xf "$foo" rm "$foo" done
quelle
Versuchen:
Dann versuche es:
Dadurch werden alle .tar.gz-Dateien im aktuellen Verzeichnis entpackt und anschließend alle .tar.gz-Dateien gelöscht. Wenn Sie eine Erklärung wünschen, wird das "|" Nimmt das stdout des Befehls davor und verwendet es als stdin des Befehls danach. Verwenden Sie "man command " ohne Anführungszeichen, um herauszufinden, was diese Befehle und Argumente bewirken. Oder Sie können online recherchieren.
quelle