2009-05-10 19 views
47

¿Cómo extraigo un subdirectorio en un tarball en el directorio actual?¿Cómo desinstalo un subdirectorio en el directorio actual?

ejemplo, el paquete de archivos de wordpress:

wordpress/ 
wordpress/wp-trackback.php 
wordpress/wp-config-sample.php 
wordpress/wp-settings.php 
wordpress/wp-rss2.php 
wordpress/readme.html 
wordpress/index.php 
... 

¿Cómo extraigo todo bajo wordpress/ en el directorio actual? En otras palabras, no creará un directorio wordpress.

He intentado esto sin suerte:

tar xvfz latest.tar.gz wordpress -C ./ 

sé que puedo extraer normalmente y moverlo hacia atrás, pero me imagino que tiene que haber una manera de hacerlo de una sola vez.

+0

Para aquellos que digan y sugieran que se cierre esta pregunta: ¿cómo es posible? –

+3

He tenido este problema exacto en un contexto de programación. Tratemos de ser un poco más abiertos de mente, personas - si s/wordpress/kernel_source/g es suficiente para hacer una pregunta "relacionada con la programación", para empezar fue "programación relacionada". –

+1

@j_random_hacker - la pregunta no está relacionada con la programación. la pregunta es básicamente "¿cómo uso la utilidad tar en un sistema Unix?" no hay nada de programación relacionado con eso. podría ir en serverfault o en un foro para usar Unix. –

Respuesta

82

¿Por qué no untar normalmente, entonces simplemente:

mv wordpress/.* . 
mv wordpress/* . 
rmdir wordpress 

Pero, por desgracia, hay:

tar --strip-components=1 -zxvf wordpress.tgz 
+3

Tenía la esperanza de que hubiera una manera de hacerlo con un solo comando. –

+1

Curiosamente, los componentes de tira son una opción para FreeBSD boxen, pero no para algunas de mis instalaciones anteriores de Linux. –

+0

+1. Tenga en cuenta que, si el archivo tar contiene un archivo o directorio llamado wordpress/wordpress, su segundo comando mv fallará. (Pero felicitaciones por atrapar el caso de archivo oculto.) –

6

Sorprendentemente, mi tar (GNU tar v1.16) no tiene una opción para quitar los elementos iniciales del nombre de ruta.

Sin embargo, parece que las versiones más recientes tienen un parámetro --strip-components=number, que eliminará muchos componentes del inicio de la ruta.

Si como yo está utilizando una mayor tar, y está seguro de que el archivo no contiene un directorio o un archivo con el nombre wordpress/wordpress, siempre se puede simplemente hacer un enlace simbólico wordpress-., a continuación, extraer como de costumbre:

ln -s . wordpress 
tar xvfz latest.tar.gz wordpress 
rm wordpress 
+0

El cuadro en el que estoy no tiene ese param de "componentes de tira", por lo que la idea de enlace simbólico es interesante uno. No puedo evitar preguntarme si nos falta algo. Unix es así ... usualmente hay una forma no obvia de que solo puedes aprender preguntando. De ahí mi pregunta! –

+0

@Cory: Bueno, creo que la respuesta a eso es "Los desarrolladores de tar se dieron cuenta y presentaron la opción --strip-components". :) –

Cuestiones relacionadas