Unter meinem aktuellen Verzeichnis habe ich zwei Unterverzeichnisse:
dir_1/
- file1.png
- file2.png
...
- fileN.png
dir_2/
- fileA.txt
- ...
- fileZ.txt
Wenn ich die beiden Verzeichnisse mit TAR komprimiere, geschieht Folgendes:
tar -cvzf result.tar.gz dir_1/ dir_2/
ich habeergebnis.tar.gzaber es behält die Verzeichnisstruktur bei. Ich meine, wenn ich das extrahiereergebnis.tar.gz, ich habe wieder dir_1
& bekommen dir_2
.
Wie kann ich tar komprimieren, so dass die Verzeichnisstruktur nicht erhalten bleibt, was bedeutet, dass ich beim Extrahieren der tar.gz-Datei nur Dateien erhalte
result/
file1.png
...
fileN.png
fileA.txt
...
fileZ.txt
Antwort1
-C
Ich denke, dass Sie dies mit der Option tun können .
Von der Tar-Manpage:
-C directory, --cd directory, --directory directory
In c and r mode, this changes the directory before adding the following files.
In x mode, change directories after opening the archive but before extracting
entries from the archive.
Das bedeutet, dass Sie in der Lage sein sollten,
tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .
um zu erreichen, was Sie wollen.
Antwort2
Mit GNU tar können Sie die --transform
Option zum Umschreiben von Dateinamen verwenden, wenn Sie sie zu einem Archiv hinzufügen oder daraus extrahieren. Mit BSD tar oder pax -s
bewirkt die Option dasselbe.
So entfernen Sie die führende Verzeichniskomponente (so dass sie dir_1/subdir/somefile
als gespeichert wird subdir/somefile
):
tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2
So entfernen Sie alle Verzeichniskomponenten (so dass sie dir_1/subdir/somefile
als gespeichert werden somefile
):
tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2