¿Cómo copio la carpeta con archivos a otra carpeta en Unix / Linux? [cerrado]

1192

Tengo algunos problemas para copiar una carpeta con archivos en esa carpeta en otra carpeta. El comando cp -rno copia archivos en la carpeta.

usuario2080656
fuente
Desearía que esto se pudiera migrar a un SE donde se trata más sobre el tema.
Jrh
66
La programación de Bash es sobre el tema .
xskxzr

Respuestas:

1980

La opción que estás buscando es -R.

cp -R path_to_source path_to_destination/
  • Si destinationno existe, se creará.
  • -Rsignifica copy directories recursively. También puede usar -rya que no distingue entre mayúsculas y minúsculas.
  • Tenga en cuenta los matices al agregar el final /según el comentario de @ muni764 .
Pierre Salagnac
fuente
55
Me pregunto por qué este comando exacto en dockerfile copia todos los archivos del directorio de origen en el destino, en lugar de copiar solo el directorio completo.
holms
44
Creo que el '/' al final marca la diferencia y eso podría explicar su experiencia. Si la fuente incluye la barra diagonal final, copiará lo que está en el directorio solamente. Si no incluye la barra diagonal final, también copiará el directorio y luego el contenido dentro de él. Mi memoria es que este comportamiento varía un poco por comando y tal vez por evento. Aquí hay una referencia con más información.
OllieBrown
23
Diría que si no desea incluir la fuente y quiere asegurarse de que todo esté copiado (enlaces simbólicos, archivos ocultos) sin copiar la carpeta principal de origen, use -ra source /. destino. Esto asegurará que el contenido de la carpeta se copie, pero no la carpeta principal en sí, que a veces es útil. Y la diferencia es el /.
muni764
Esto también parece funcionar correctamente si los directorios que se copiarán son enlaces simbólicos, que fue mi caso de uso.
Gdalya
3
Tenga en cuenta la importancia de "Slash dot" en su fuente en cp -r src/. destSé que se menciona, pero todavía parece que lo extraño cada vez.
bbeecher
368

Estás buscando el cpcomando. Debe cambiar los directorios para estar fuera del directorio que está intentando copiar.

Si se llama al directorio que está copiando dir1y desea copiarlo a su /home/Picturescarpeta:

cp -r dir1/ ~/Pictures/

Linux distingue entre mayúsculas y minúsculas y también necesita /después de cada directorio para saber que no es un archivo. ~es un carácter especial en el terminal que evalúa automáticamente el directorio de inicio del usuario actual. Si necesita saber en qué directorio se encuentra, use el comando pwd.

Cuando no sabe cómo usar un comando de Linux, hay una página de manual a la que puede consultar escribiendo:

man [insert command here]

en un indicador de terminal.

Además, para completar automáticamente las rutas de archivo largas al escribir en el terminal, puede presionar Tabdespués de haber comenzado a escribir la ruta y se le presentarán opciones o insertará la parte restante de la ruta.

Alex W
fuente
66
Para aclarar más, la -ropción en esto copiará los directorios de forma recursiva.
TVann
55
¿El OP no especificó que estaba usando el cp -rcomando, pero que no estaba funcionando correctamente?
MD XF
44
La razón por la que incluí la información sobre páginas de manual es que estos indicadores pueden depender de la distribución. Sin embargo, en su mayor parte, parece ser -r, --recursivey -Rson equivalentes. También dará trampas comunes, etc., lo cual es bueno.
Alex W
66
Si desea copiar de forma portátil el DIRECTORIO y no solo su contenido, deje el guión final en la carpeta de origen, es decir. cp -r dir1 ~/Pictures/
mehtunguh
105

Utilizar:

$ cp -R SRCFOLDER DESTFOLDER/
cIph3r
fuente
44
así es como lo hice y demo1_copyaún no existía$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ