tar -tf filename.tar
folder1/file
folder1/name
[...]
Vorrei estrarre il file e il nome in, cartella2 . Questo può essere fatto come one-liner?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Vorrei estrarre il file e il nome in, cartella2 . Questo può essere fatto come one-liner?
Risposte:
Usa -C
e --strip-components
(Vedi 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
Il -C
flag presuppone che sia già presente una directory in modo che il contenuto del file tar possa essere espanso in essa. da qui il mkdir FOLDER
.
Il --strip-components
flag viene utilizzato quando un file tar si espande naturalmente in una cartella, diciamo, come github, dove è un esempio di repo-name-master
cartella. Ovviamente non avresti bisogno della cartella di primo livello generata qui, quindi --strip-components
impostare su 1
rimuoverà automaticamente quella prima cartella per te. Maggiore è il numero impostato, le cartelle nidificate più profonde vengono rimosse.
Puoi anche usare l' --transform
opzione per un po 'più di flessibilità. Accetta qualsiasi operazione di sostituzione di sed.
Ad esempio, ecco come estraggo un tarball di Linux in una nuova directory in modo da poter applicare una patch:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Non ho trovato--strip-components
. bello