Entpacken Sie einen bestimmten Ordner in tar.gz

8

Wie entpacke / dekomprimiere ich einen bestimmten Ordner in einem tar.gz über das Terminal / die Befehlszeile ( Ubuntu 14.04 (Trusty Tahr))?

Präzise:

-file.tar.gz
 -- folder1
 -- folder2

Wie extrahiere ich ...

... folder1 -->  ~/locationX
... folder2 --> ~/locationY

Wie kann ich das machen?

Bitte beachten Sie: Dies bezieht sich ausschließlich auf das Terminal / die Befehlszeile und nicht auf Puppet . Dies ist nur ein Beispiel - ich würde ungefähr 50 zusätzliche Schritte in Puppet speichern, wenn es einen Befehl gibt, einen bestimmten Ordner aus einem heraus zu dekomprimieren, tar.gzda ich vermeiden könnte, Dateien zu verschieben ...

frank
quelle

Antworten:

15

Ich denke, das sollte es tun:

tar -xzf file.tar.gz -C ~/locationX folder1 -C ~/locationY folder2

Die -COption bedeutet, vor dem Extrahieren in das angegebene Verzeichnis zu wechseln. Durch die Angabe von Dateinamenargumenten nach dem Tarfile-Namen wird die Extraktion nur auf diese Dateien oder Verzeichnisse beschränkt. Und Sie können diese -Chängenden Verzeichnisse wie Sie wiederholen .

Beachten Sie, dass dies die Extraktionen in Unterverzeichnissen ausführt: folder1wird in ~/locationX/folder1, folder2wird in gehen ~/locationY/folder2. Sie können dies verhindern, indem Sie die --strip-componentsOption verwenden:

tar -xzf file.tar.gz -C ~/locationX --strip-components=1 folder1 \
                     -C ~/locationY --strip-components=1 folder2

Wenn die tatsächlichen Präfixe in der TAR-Datei lauten ./folder1und ./folder2, wie es wahrscheinlich ist, wenn Sie die TAR-Datei mit erstellt haben tar -czf file.tar.gz ., müssen Sie das ./Präfix in die Dateinamenargumente aufnehmen und zu ändern --strip-components=2.

Barmar
quelle
genial! Abgesehen von der Tatsache, dass Sie die Frage gelöst haben, die ich hatte, kann ich mich nicht erinnern, wann ich in einem Forum eine so vorausschauende Antwort erhalten habe. Vielen Dank!
Frank
@frank Es gibt die Stackexchange-Community für Sie. Herzlich willkommen!
BAR
Und ich dachte xkcd.com/1168
iceman