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?)
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