Wie entpacken Sie alle tar.gz-Dateien, die sich in mehreren Ordnern gleichzeitig befinden, in ein anderes Verzeichnis?

2181
beginner

In meinem aktuellen Verzeichnis befinden sich viele Ordner. Jeder Ordner enthält eine tar.gz-Datei. Um die tar.gz-Datei zu extrahieren, muss ich mich in jedem Ordner befinden und jedes Mal den folgenden Befehl ausführen.

tar xvzf tar.gz -C /path/to/targetdirectory 

In meinem aktuellen Verzeichnis sieht es wie folgt aus:

 current directory ├──Folder1 ├── A.tar.gz ├──Folder2 ├── B.tar.gz ├──Folder3 ├── C.tar.gz ├──Folder4 ├── D.tar.gz ├──Folder5 ├── E.tar.gz 

Um alles auf einmal herauszuziehen, versuchte ich es so

tar xvzf */*.tar.gz -C /path/to/targetdirectory 

Dies gab mir einen Fehler:

tar: Folder1/A.tar.gz: Not found in archive tar: Folder2/B.tar.gz: Not found in archive tar: Folder3/C.tar.gz: Not found in archive tar: Folder4/D.tar.gz: Not found in archive tar: Folder5/E.tar.gz: Not found in archive 
1

1 Antwort auf die Frage

1
slhck

Verwenden Sie findeinen Befehl für jede gefundene Datei im Verzeichnis dieser Datei:

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \; 

Die -execdirOption wird tarim Ordner der gefundenen Datei ausgeführt und {}durch den Namen der Tarfile ersetzt.

Weitere Informationen finden Sie in der findDokumentation .

Wo soll ich das Zielverzeichnis im Befehl angeben? beginner vor 6 Jahren 0
OK. So haben Sie die extrahierten Dateien ins Zielverzeichnis gebracht. finden . -name '* .tar.gz' -execdir tar -C / pfad / zum / Zielverzeichnis -xzvf '{}' \; Das hat funktioniert beginner vor 6 Jahren 0
Ja, Sie können die Befehle wie üblich mit der Option -exec angeben. slhck vor 6 Jahren 0
Hallo ... Ich habe kleine Zweifel. Gibt es eine Möglichkeit, den Pfad zu diesen ... *. Tar.gz-Dateien anzugeben? beginner vor 6 Jahren 0
Sie können `find` in einem anderen Verzeichnis finden, indem Sie` find .` durch `find / path / to / directory` ersetzen. slhck vor 6 Jahren 0