tar -tf filename.tar
folder1/file
folder1/name
[...]
Ich möchte die Datei und den Namen in Ordner 2 extrahieren . Kann das als Einzeiler gemacht werden?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Ich möchte die Datei und den Namen in Ordner 2 extrahieren . Kann das als Einzeiler gemacht werden?
Antworten:
Verwenden Sie -C
und --strip-components
(siehe man tar
).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
Das -C
Flag setzt voraus, dass bereits ein Verzeichnis vorhanden ist, sodass der Inhalt der TAR-Datei darin erweitert werden kann. daher die mkdir FOLDER
.
Das --strip-components
Flag wird verwendet, wenn sich eine TAR-Datei auf natürliche Weise in einen Ordner erweitern würde, beispielsweise in github, in dem sie Beispiele für repo-name-master
Ordner enthält. Natürlich müssten Sie den hier erstellten Ordner der ersten Ebene nicht so --strip-components
einstellen 1
, dass er diesen ersten Ordner automatisch für Sie entfernt. Je größer die Anzahl ist, desto tiefer verschachtelte Ordner werden entfernt.
Sie können auch die --transform
Option für ein bisschen mehr Flexibilität verwenden. Es akzeptiert alle Sed-Ersatzoperationen.
So extrahiere ich beispielsweise einen Linux-Tarball in ein neues Verzeichnis, damit ich einen Patch anwenden kann:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Ich habe es nicht bemerkt--strip-components
. schön