¿Por qué todos los votos negativos? Hay más opciones que solo -C (y tal vez su versión no proporciona esto).
Alfe
2
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte los temas sobre los que puedo preguntar aquí en el Centro de ayuda. Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar.
jww
@jww Mientras veo su punto de etiquetas también hemos nombrado tary gzvueltas en este foro. Extraer un tarball en un directorio específico puede ser parte de un script de shell y, por lo tanto, parte de la programación. Supongo que este tipo de preguntas se pueden hacer en cualquier foro entonces.
Alfe
Respuestas:
319
Puede usar la opción -C(o --directorysi 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 tarcapacidad de extracción a un directorio específico, puede simplemente cdingresar 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:
Puede usar for loop para descomprimir múltiples archivos .tar.gz en otra carpeta. El siguiente código tomará / destination / folder / path como argumento para el script y descomprimirá todos los archivos .tar.gz presentes en la ubicación actual en / destination / folder / path.
if [ $# -ne 1 ];
then
echo "invalid argument/s"
echo "Usage: ./script-file-name.sh /target/directory"
exit 0
fi
for file in *.tar.gz
do
tar -zxvf "$file" --directory $1
done
tar
ygz
vueltas en este foro. Extraer un tarball en un directorio específico puede ser parte de un script de shell y, por lo tanto, parte de la programación. Supongo que este tipo de preguntas se pueden hacer en cualquier foro entonces.Respuestas:
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 detar
. El directorio debe existir:Si no está utilizando una
tar
capacidad de extracción a un directorio específico, puede simplementecd
ingresar a su directorio de destino antes de llamartar
; 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: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:
fuente
o con GNU tar
fuente
gzip
en caso de que el tar no entienda los archivos comprimidos.Extrae myArchive.tar a / destinationDirectory
Comandos:
fuente
Puede usar for loop para descomprimir múltiples archivos .tar.gz en otra carpeta. El siguiente código tomará / destination / folder / path como argumento para el script y descomprimirá todos los archivos .tar.gz presentes en la ubicación actual en / destination / folder / path.
fuente