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 -Cund --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 -CFlag setzt voraus, dass bereits ein Verzeichnis vorhanden ist, sodass der Inhalt der TAR-Datei darin erweitert werden kann. daher die mkdir FOLDER.
Das --strip-componentsFlag 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-masterOrdner enthält. Natürlich müssten Sie den hier erstellten Ordner der ersten Ebene nicht so --strip-componentseinstellen 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 --transformOption 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