Como copiar todo el contenido de un directorio en otro, ficheros ocultos incluidos
Publicado: 24 Febrero, 2010 - 21:28 Como copiar todo el contenido de un directorio en otro, ficheros ocultos incluidos
Quiero copiar todo el contenido de un directorio en otro, archivos que empiezan por "." incluidos. Pero con
cp a/* b/no se consigue. En cierto modo tiene sentido, porque si intentara copiar lo que se ve con un ls -la intentaría copiar "." y "..", sería un poco raro. Pero si eso no es así hay excepciones a la sintaxis de * para cualquier cosa o ? para cualquier carácter único que no he encontrado por ningún sitio.
Hay otros que no funcionan y no acabo de entender por qué:
cp a/?* b/
cp a/[.a-zA-Z0-9]* b/Igual he probado alguno más que no me acuerdo, pero se ve la idea. Por supuesto pasa lo mismo con rm.
Mi duda no es tanto como conseguirlo, que ya se que hay otras maneras, como entender la sintaxis de este tipo de comandos.
Gracias de antemano.
- Inicie sesión o regístrese para enviar comentarios
- 3164 lecturas


yo habria hecho un comando en el bash_history que hiciera un "cp *.* && cp *.*~", es media prmitiva mi respuesta pero asi lo habria hecho
cp -a /directorio/origen/ /directorio/destino/Tu consulta es puntual o te interesa saber el porque * no incluye a . ?
cp -r directorio_origen directorio_destinoSaludos
Por lo que he visto al ejecutar
man cpcp -r puede dar problemas con algun tipo de fichero, recomienda mejor cp -R
cp -a /directorio/origen/ /directorio/destino/Tu consulta es puntual o te interesa saber el porque * no incluye a . ?
Creo que eso no hace lo que yo quiero, lo he probado y a mí me copia al directorio de destino, el directorio de origen. Lo que quiero es
cp -r /directorio/origen/* /directorio/destino/y también los archivos que empiecen por . o sea algo así como lo anterior más
cp -r /directorio/origen/.* /directorio/destino/Pero eso me intenta copiar "." y "..".
Una cosa la opción -a ¿la usas porque incluye -r?
Si en realidad lo que me interesa es saber por qué * no incluye a ".".
cp -r directorio_origen directorio_destinoSaludos
Me pasa lo mismo
yo habria hecho un comando en el bash_history que hiciera un "cp *.* && cp *.*~", es media prmitiva mi respuesta pero asi lo habria hecho
No acabo de entender la sintaxis que utilizas.
-R, -r, --recursive
copy directories recursively
¿Donde leiste eso?
Pero es que no necesitas tipificar el asterisco para que te copie el directorio en cuestión de forma recursiva, inclusive los archivos ocultos.
Donde dices:
cp -r /directorio/origen/* /directorio/destino/Debería decir:
cp -r /directorio/origen /directorio/destino/Saludos
cp -a /directorio/origen/ /directorio/destino/Tu consulta es puntual o te interesa saber el porque * no incluye a . ?
Creo que eso no hace lo que yo quiero, lo he probado y a mí me copia al directorio de destino, el directorio de origen. Lo que quiero es
cp -r /directorio/origen/* /directorio/destino/y también los archivos que empiecen por . o sea algo así como lo anterior más
cp -r /directorio/origen/.* /directorio/destino/Pero eso me intenta copiar "." y "..".
Una cosa la opción -a ¿la usas porque incluye -r?
Si en realidad lo que me interesa es saber por qué * no incluye a ".".
cp -r directorio_origen directorio_destinoSaludos
Me pasa lo mismo
Tu dijiste que querías copiar todo el directorio no solo los archivos ocultos
en ese caso puedes hacer
cp /origen/.[^.]* /destino/Eso copiará a destino todos los archivos ocultos (y solo los archivos ocultos, no recorre directorios recursivamente a menos que lo indiques)
Utilizo -a porque ademas de recorrer recursivamente conserva los dueños y permisos (entre otras cosas).
No se si es a mi a quien preguntas Pato pero te copio mi salida de man cp
-r Copia directorios recursivamente, copiando cualquier fichero nodirectorio ni enlace simbólico (esto es, FIFOs y ficheros
especiales) como si fuera un fichero regular. Esto significa
intentar leer los datos de cada fichero fuente y escribirlos en
el destino. Así, con esta opción, `cp' puede muy bien colgarse
indefinidamente leyendo un FIFO o /dev/tty. (Esto es un fallo.
Significa que uno tiene que evitar -r y debe emplear en su lugar
-R si no sabe qué hay en el árbol de directorios que se está
copiando. Abrir un fichero de dispositivo desconocido, digamos
un escáner, tiene efectos desconocidos sobre el hardware.)
-R, --recursive
Copia directorios recursivamente, preservando los no-directorios
(vea -r justo arriba).