Poner archivos tar'd en un subdirectorio

8

Tengo una configuración de directorio como la siguiente:

folder_x
file.y
file.z

Me gustaría crear un archivo tar para que cuando se extraiga la estructura se vea así:

dir_q/folder_x
dir_q/file.y
dir_q/file.z

¿Cómo podría hacer que esto funcione usando tar? Como referencia, el comando actual que estoy usando es:

tar -czf archive.tar.gz file.y file.z folder_x

fuente

Respuestas:

9

Nunca he usado la opción --transform, pero creo que haría lo que necesita:

tar -czf archive.tar.gz --transform 's,^,dir_q/,' file.y file.z folder_x

Realice el uso de en ,lugar de /como separador, para que podamos agregar una barra diagonal final.

Marnix A. van Ammers
fuente
Hmm, parece que no lo está haciendo correctamente: file.z-> dirfile.zy dirfolder_x. También jugaré con la expresión regular para ver si puedo obtenerla de la manera que quiero.
1
Así es como lo hago: tar -czf archive.tar.gz --transform 's, ^, dir_q /,' file.y file.z folder_x Sed permite, en lugar de /, evitar la ambigüedad cuando hay barras diagonales en su expresión . Normalmente diría que puedes escapar de la barra oblicua con una barra diagonal inversa, pero sed (al menos, gnu sed) no lo interpreta correctamente.
jdb
tar --transform no parece funcionar en MacOS
Alexander Mills
En MacOS, puede instalar macports y gnutar para obtener la opción --transform. O descargue y compile gnutar usted mismo.
Marnix A. van Ammers
1

Si no le importa crear el nuevo directorio ...

mkdir dir_q; tar -C $ _ -xzvf archive.tar.gz

alternativamente, cree un nuevo directorio, descomprima el archivo en ese directorio y luego vuelva a colocarlo en el directorio principal para incluir su nombre en la versión extraída. De esa manera no tienes que recordar alguna invocación súper larga.

John T
fuente