Wie kann ich alle Dateien in einem Zielverzeichnis rekursiv gunzipen?

30

Ich möchte wissen, mit welchem ​​Befehl alle Dateien in einem Zielverzeichnis rekursiv gezippt werden sollen. Ich habe versucht, den Befehl unzip zu verwenden, aber es hat nicht funktioniert.

Ich habe den Befehl zum Entpacken aller ZIP-Dateien in einem Zielordner ausprobiert .

user2028856
quelle

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>
    
AB
quelle
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.

heemayl
quelle