Respuestas:
De 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.
es decir, tar xC /foo/bar -f /tmp/foo.tar.gzdebe hacer el trabajo. (en FreeBSD, pero el tar de GNU es básicamente el mismo a este respecto, consulte "Cambio del directorio de trabajo" en su manual )
Haciendo:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
haría el trabajo
Básicamente, lo que hace es generar un nuevo shell (los paréntesis), en este subshell, cambiar el directorio foo/bary luego descomprimir el archivo.
Puede cambiar el ;by a &¶ asegurarse de que cdfunciona bien.
tar -xf ancd.tar.gz my/name/file
puede dar el nombre del archivo con ./filedespués del archivo tar.
tar -xf ancd.tar.gz ./my/name/file
si funciona significa que ha creado un alquitrán con ./. use menos comando para ver el contenido de alquitrán.
less ...tar.file
Me encontré con lo que parece ser un problema similar y lo resolví.
El problema estaba en la creación del archivo en lugar del archivo creado.
Al intentar tar y transferir un archivo en el directorio A, proporcioné la ruta al archivo original en el comando tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Lo que pude hacer para resolver es
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Al transferir y extraer el tarball, se crean las subdirecciones requeridas.
tar -xvf MyFile.tar