shell - cvfz - untar filename.tr.gz al directorio "nombre de archivo"
tar unix (4)
Con Bash y GNU tar:
file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file
Me gustaría descomprimir un archivo, por ejemplo, "tar123.tar.gz" al directorio / myunzip / tar123 / "usando un comando de shell.
tar -xf tar123.tar.gz descomprimirá los archivos pero en el mismo directorio donde estoy trabajando.
Si el nombre de archivo fuera "tar233.tar.gz", quiero descomprimirlo a /myunzip/tar233.tar.gz "para que el directorio de destino se base en el nombre de archivo.
¿Alguien sabe si el comando tar puede hacer esto?
Puede cambiar el directorio antes de extraer con el indicador -C
, pero el directorio ya debe existir. (Si crea directorios específicos de archivos, recomiendo encarecidamente que no se foo.tar.gz
; la extensión implica que es un archivo comprimido, pero en realidad es un directorio. Eso generará confusión).
Tratar
file=tar123.tar.gz
dir=/myunzip/$(basename $file .tar.gz) # matter of taste and custom here
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; }
mkdir "$dir" && ( gzip -d "$file | ( cd "$dir" && tar xf - ) )
Si está utilizando GNU tar, también puede darle una opción -C "$dir"
que hará que cambie al directorio antes de extraer. Pero el código anterior debería funcionar incluso con un alquitrán de la Edad de Bronce.
Descargo de responsabilidad: ninguno de los códigos anteriores ha sido probado.
tar -xzvf filename.tar.gz -C destination_directory