So extrahieren Sie ein TGZ, das aus vielen Dateien in mehreren Unterordnern besteht, in ein anderes Verzeichnis (Ubuntu Linux)

450
cezudun
current directory ├──Folder1 ├── sub_folder1 ├──Folder2 ├── sub_folder21 ├── sub_folder22 ├── sub_folder221 ├──Folder3 ├── sub_folder31 ├──Folder4 ├── sub_folder41 ├──Folder5 ├── sub_folder51 

In Anbetracht der obigen Ordner-Unterordner-Hierarchie, die in eine tgz-Datei komprimiert wurde, muss ich alle Dateien in den Unterordnern von Ordnern in ein einziges Ausgabeverzeichnis extrahieren.
Tatsächlich befinden sich alle Dateien im tiefsten Pfad jeder Ordner-Unterordnerkombination. Zum Beispiel in sub_folder1, sub_folder2, sub_folder221 usw. habe ich folgendes versucht:

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

... aber das gibt die genaue Hierarchie von Dateien und Unterordnern aus, wenn ich alle Dateien in allen Unterordnern in nur einen Ausgabeordner extrahieren möchte /path/to/one/folder

0
Unklar: Haben Sie eine oder mehrere tar-Dateien? (Sie geben beide an.) Zeigen Sie auch alle Befehle, die Sie ausprobiert haben, und ihre Ergebnisse an. Bitte antworten Sie nicht in Kommentaren. Bearbeiten Sie Ihre Frage, um sie klarer und vollständiger zu machen. Scott vor 6 Jahren 0

1 Antwort auf die Frage

1
RalfFriedl

Das execdirist genau der falsche Befehl für Ihre Aufgabe, es wechselt in das Verzeichnis der Datei.

Wenn Sie verwenden -exec, bleibt das Arbeitsverzeichnis gleich und alle tar-Dateien werden aus diesem Verzeichnis extrahiert.

Es gibt auch die Option, dieses Verzeichnis -Czu tarändern.

find . -name '*.tar.gz' -exec tar xzvfC '{}' /path/to/one/folder \; 

oder

find . -name '*.tar.gz' -exec tar -xzvf '{}' -C /path/to/one/folder \; 
Versuchen Sie den Befehl, den ich hinzugefügt habe. RalfFriedl vor 6 Jahren 0
Ich erhalte folgende Fehlermeldung: tar (child): C: Kann nicht geöffnet werden: Keine solche Datei oder Verzeichnis tar (child): Fehler ist nicht wiederherstellbar: jetzt beenden tar: Child hat den Status 2 zurückgegeben. Ich habe auch meine Frage bearbeitet, vielleicht war es missverständlich : Fehler kann nicht behoben werden: wird jetzt beendet cezudun vor 6 Jahren 0
Versuchen Sie die geänderten Befehle. RalfFriedl vor 6 Jahren 0