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.

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

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/

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.