Wie kann ich alle Dateien in einem Zielverzeichnis rekursiv gunzipen?


Antworten:


15

Verwenden Sie die folgenden Befehle. Ersetzen Sie <path_of_your_zips>durch den Pfad zu Ihren ZIP-Dateien und <out>durch Ihren Zielordner:

  • Für GZ-Dateien

    find <path_of_your_zips> -type f -name "*.gz" -exec tar xf {} -C <out> \;
    

    oder

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Für ZIP-Dateien

    find <path_of_your_zips> -type f -name "*.zip" -exec unzip {} -d <out> \;
    

    oder

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    

Funktioniert das mit .gz-Dateien?
user2028856

1
verbessert, jetzt ja :)
AB

2
Warum nicht -execmögen find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch

1
Arbeit nur für Tarball-Dateien, nicht nur für G-Zip-Dateien
Covich

1
GZIP-Dateien, die keine TAR-Dateien sind, weisen den folgenden Fehler auf:tar: This does not look like a tar archive
Bis auf weiteres angehalten.

64

gunziphat -rOption. Von man gunzip:

   -r --recursive
          Travel  the directory structure recursively. If any of the 
file names specified on the command line are directories, gzip 
will descend into the directory and compress all the files it finds
there (or decompress them in  the  case  of gunzip ).

Wenn Sie also gunzipalle komprimierten Dateien gunzipinnerhalb des Verzeichnisses /foo/barund aller seiner Unterverzeichnisse dekomprimieren möchten ( derzeit können Sie Dateien dekomprimieren, die mit gzip, zip, compress, compress -H oder pack erstellt wurden) :

gunzip -r /foo/bar

Dies behandelt auch Dateinamen mit Leerzeichen.

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.