it-swarm.com.de

Extrahieren und löschen Sie alle .gz-Dateien in einem Linux-Verzeichnis

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?

73
user2247643

Das sollte es tun:

gunzip *.gz
148
Adrian Dunn

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

17
techedemic

@techedemic ist korrekt, aber es fehlt '.' um das aktuelle Verzeichnis zu erwähnen, und dieser Befehl durchsucht alle Unterverzeichnisse.

find . -name '*.gz' -exec gunzip '{}' \;
17
elhaj

Wenn Sie eine einzelne Datei extrahieren möchten, verwenden Sie Folgendes:

gunzip file.gz

Es entpackt die Datei und entfernt die .gz-Datei.

3
Neelam

Extrahieren Sie alle gz-Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen:

 find . -name "*.gz" | xargs gunzip 
2
Jokerius
for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done
1
Steven Penny

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.

0
user2921779