2011-01-01 13 views
14

alquitrán en un directorio mydir archivará los archivos ocultos y subdirectorios ocultos, pero el alquitrán del dentromydir con un comodín * no lo hará. ¿Es esto una incoherencia o error de larga data y conocido?archivado (alquitrán de ubuntu) directorios ocultos

Editar (información adicional): tar desde dentro mydir con un comodín no va a "ver" los archivos ocultos ni de archivos y subdirectorios ocultos en el directorio inmediata. Sin embargo, en los subdirectorios no ocultos de mydir se archivarán los archivos ocultos y los subdirectorios ocultos.

Respuesta

4

La respuesta es que el comodín * está a cargo de la cáscara y simplemente no se expande a las cosas que empiezan por un punto. El otro comodín ? tampoco se expande a las cosas que comienzan con un punto. Gracias a Keith por señalar que es el shell el que hace la expansión, por lo que no tiene nada que ver con tar.

Si usa shopt -s dotglob, la expansión incluirá cosas como .filename. Gracias a Andy

Usa shopt -u dotglob para desactivarlo.

Cambiar la opción dotglob no cambia ls sí mismo. Más bien solo cambia el comportamiento de expansión como se muestra en algo como ls *.

+0

Eso es interesante, pero ¿podría mostrarlo en un comando de ejemplo? – felwithe

24

Con comodín, no funcionará. Tienes que especificar (directorio actual) si se refiere al directorio completo, incluidos los archivos ocultos. Puede hacer

tar -cvpzf test.tgz . 
+6

Pero tenga cuidado de colocar el nuevo alquitrán dentro del mismo directorio que está bloqueando. Puedes entrar en un círculo desagradable. – Keith

+7

tar cvpfz test.tgz --exclude = *. Tgz. – H2ONaCl

+0

Sí, eso funcionaría –

3

El caparazón expande los comodines para que tar ni siquiera lo vea. Tienes que agregarlos explícitamente si quieres hacer eso. (.*). Sin embargo, es más común atacar un único directorio para que cuando lo desinstale todo vaya al mismo lugar.

+0

+1 para señalar que esto se debe al caparazón, no al alquitrán. –

+0

En realidad, tar on. * Subirá (probablemente tan alto como el directorio raíz), por lo que probablemente no desee hacerlo. – H2ONaCl

+0

Corrección: no tan alta como la raíz. – H2ONaCl

1
shopt -s dotglob 

Esto hará que el

+6

¡Bienvenido a StackOverflow! ¿Olvidaste terminar tu mensaje? –

+0

Keith explica esta respuesta en uno de sus comentarios. – H2ONaCl

5

Se puede utilizar:

tar -cvpzf test.tgz * .??* 

embargo, esto sólo funciona para los archivos ocultos con los nombres> 2 ('' para prevenir y '..')

1

Puede comprimir todos los archivos/carpetas en el directorio actual (incluyendo .hidden) mediante el uso de:

tar -zcvf compressed.tgz `ls -A -1` 

El último argumento son las carpetas que desea comprimir. Si lo pasa ls -A -1, está pasando todas las carpetas en su directorio actual, pero . y ... Cuando se trata de subdirectorios, los archivos .hidden ya están incluidos en la compresión de forma predeterminada.

Cuestiones relacionadas