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 eliminar un directorio principal con la --strip-components
opción (y, en general, 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 (lo 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 !.*!!
Gilles 'SO- deja de ser malvado'
fuente
wordpress
)? Necesito esto cuando extraigo tarballs creados por GitHub que contienen la revisión git en el componente despojado que no conozco de antemano.