Puede usar la opción -C
(o --directory
si prefiere las opciones largas) para dar el directorio de destino de su elección en caso de que esté usando la versión Gnu de tar
. El directorio debe existir:
mkdir foo
tar -xzf bar.tar.gz -C foo
Si no está utilizando una tar
capacidad de extracción a un directorio específico, puede simplemente cd
ingresar a su directorio de destino antes de llamar tar
; entonces tendrá que dar una ruta completa a su archivo, por supuesto. Puede hacer esto en una subshell de alcance para evitar influir en el script circundante:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
O bien, si ni una ruta absoluta ni una ruta relativa al archivo de almacenamiento son adecuadas, también puede usar esto para nombrar el archivo fuera del subshell de alcance:
TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz