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?
Das sollte es tun:
gunzip *.gz
Es gibt mehr als einen Weg, dies offensichtlich 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 sicher, dass es auch andere Möglichkeiten gibt, aber dies ist wahrscheinlich die einfachste.
Um es zu entfernen, führen Sie einfach einen rm -rf *.gz
im entsprechenden Verzeichnis aus
@techedemic ist korrekt, aber es fehlt '.' um das aktuelle Verzeichnis zu erwähnen, und dieser Befehl durchsucht alle Unterverzeichnisse.
find . -name '*.gz' -exec gunzip '{}' \;
Wenn Sie eine einzelne Datei extrahieren möchten, verwenden Sie Folgendes:
gunzip file.gz
Es entpackt die Datei und entfernt die .gz-Datei.
Extrahieren Sie alle gz-Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen:
find . -name "*.gz" | xargs gunzip
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 "|" übernimmt den Standardausdruck des Befehls vor dem Befehl und verwendet diesen als Standardwert für den Befehl danach. Verwenden Sie "man command " ohne die Anführungszeichen, um herauszufinden, was diese Befehle und Argumente bewirken. Oder Sie können online recherchieren.