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

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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.