Risposte:
Da man tar:
-C 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.
cioè, tar xC /foo/bar -f /tmp/foo.tar.gzdovrebbe fare il lavoro. (su FreeBSD, ma GNU tar è sostanzialmente lo stesso in questo senso, vedi "Cambiare la directory di lavoro" nel suo manuale )
fare:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
farebbe il lavoro.
Fondamentalmente, ciò che fa è generare una nuova shell (le parentesi), in questa subshell, cambiare directory foo/bare quindi decomprimere il file.
È possibile modificare il ;da a &&per essere sicuri che cdfunzioni bene.
tar -xf ancd.tar.gz my/name/file
puoi dare il nome del file con ./fileafter tar file.
tar -xf ancd.tar.gz ./my/name/file
se funziona significa che hai creato un tar con ./. usa meno comando per vedere il contenuto di tar.
less ...tar.file
Ho riscontrato quello che sembra essere un problema simile e l'ho risolto.
Il problema era nella creazione del file piuttosto che nel file creato.
Durante il tentativo di tarare e trasferire un file in dir A, ho fornito il percorso al file originale nel comando tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Quello che sono stato in grado di fare per risolvere è
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Al trasferimento e l'estrazione del tarball, vengono creati i sottodir richiesti.
tar -xvf MyFile.tar