Ich habe ein Verzeichnis. Es hat ungefähr 500K .gz Dateien.
Wie kann ich alle .gz-Dateien in diesem Verzeichnis extrahieren und die .gz-Dateien löschen?
Ich habe ein Verzeichnis. Es hat ungefähr 500K .gz Dateien.
Wie kann ich alle .gz-Dateien in diesem Verzeichnis extrahieren und die .gz-Dateien löschen?
Antworten:
Dies sollte es tun:
gunzip *.gz
find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip
Instanzen auf jeweils 50 Argumente beschränken (und sie parallel ausführen).
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 *.gz
im entsprechenden Verzeichnis aus
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
Versuchen:
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
.