it-swarm-es.tech

¿Cómo extraigo un directorio específico de un tarball? y quitar un directorio líder?

Quiero extraer un directorio específico del wordpress tarball. Específicamente wp-includes a .. Parece que la estructura de directorios dentro del tarball es wordpress/wp-includes pero solo necesito./wp-includes una vez que se ha extraído, no hay directorio wordpress inicial. ¿Cómo puedo hacer esto?)

12
xenoterracide

Para extraer un directorio específico (y su contenido, de forma recursiva), simplemente páselo como un argumento adicional en la línea de comando. Con GNU tar , puede quitar un directorio principal con --strip-components opción (y más generalmente transformar los nombres de archivo con --transform). En sistemas que no son Linux, puede usar pax (está en POSIX, pero algunas distribuciones de Linux lo omiten de su instalación predeterminada) y su -s opción.

tar xf foo.tar --strip-components=1 wordpress/wp-includes  #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes

Puede fusionar la lista de inclusión con las reglas de reescritura agregando una regla para reescribir todo al nombre vacío (que significa "no extraer"; la regla solo se aplica si las reglas anteriores no coinciden).

pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!

Suponiendo que tiene GNU tar, puede usar --strip-components :

$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes

Creo que las versiones actuales de BSD tar también admiten --strip-components. En el peor de los casos, podría hacer:

$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress
5
cjm