Unix: cómo fusionar dos directorios

17

Digamos que tengo dos carpetas con contenido diferente, fooy bar. ¿Cómo puedo combinar baren fooforma que:

  • Los archivos fooque no barestán adentro no se han tocado.
  • Los archivos barque no fooestán adentro ahora están adentro foo.
  • Los archivos fooque también están en barhan sido reemplazados por los archivos de bar.
Svish
fuente

Respuestas:

25

Si estoy leyendo sus requisitos correctamente, no hay archivos que vayan de fooa bar. Parece que puede copiar el contenido de bara foo, dejando que sobrescriba los archivos según sea necesario (su comportamiento predeterminado).

$ cp -R /path/to/bar/* /path/to/foo
asesino
fuente
Sí, de lo que no estaba seguro era de la recursividad y cómo no terminar con solo tener bar dentro de foo como foo / bar. Pero esto parece ser lo que quiero :)
Svish
1
Bien, si lo hicieras cp -R /path/to/bar /path/to/foo, crearía un directorio bardentro foo. Punto sutil.
coneslayer
1
Nota: omitirá archivos / directorios ocultos bar(es decir, con nombres que comienzan con un punto - .) debido a cómo funciona el globing de shell.
Kamil Maciorowski
9

Tenía una necesidad muy similar: la fusión baren foopero los archivos que se encuentran en bar no deberían archivos coincidentes de sobreescritura en foo. En este caso:

$ cp -R -n /path/to/bar/* /path/to/foo/
Joel Aufrecht
fuente
1

Prueba esto :

$ cp -r-u-v /path/to/foo/* /path/to/bar/

De man cp
-u, --update copy solo cuando el archivo SOURCE es más nuevo que el archivo de destino o cuando falta el archivo de destino
-R, -r, --recursivo de los directorios de copia recursiva

drew7721
fuente
1
Dos personas ya han sugerido el comando cp, por lo que su respuesta parece superflua. Dedicar unos minutos a explicar cómo los argumentos que seleccionó funcionan mejor que las otras sugerencias ayudarán a que su respuesta sea más útil.
music2myear
1
El indicador -u se actualiza solo si el archivo en el origen es más nuevo que el del destino. Consulte: man cp -> -u, --update: copie solo cuando el archivo SOURCE sea más nuevo que el archivo de destino o cuando falte el archivo de destino
drew7721
Agregue esa información a la pregunta (use Editar justo debajo de su publicación) para que las personas puedan ver esa información útil en la propia respuesta.
music2myear