Unix: Come unire due directory

Dico che ho due cartelle con vari contenuti, foo e bar . Come posso fondere il bar in foo modo che:

  • I file in foo che non sono in bar non sono intatti.
  • I file in bar che non sono in foo sono ora in foo .
  • I file in foo che sono anche in bar sono stati sostituiti dai file dalla bar .

Se leggo correttamente i tuoi requisiti, non ci sono file che vanno da foo a bar . Sembra che sia sufficiente copiare il contenuto della bar su foo , lasciando sovrascrivere i file come necessario (il suo comportmento predefinito).

 $ cp -R /path/to/bar/* /path/to/foo 

Ho avuto un'esigenza molto simile: fondere la bar in foo ma i file che sono in bar non dovrebbero sovrascrivere i file corrispondenti in foo . In questo caso:

 $ cp -R -n /path/to/bar/* /path/to/foo/ 

Prova questo :

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

man cp
-u, –update copia solo quando il file SOURCE è più recente del file di destinazione o quando il file di destinazione è mancante
-R, -r, –recursive copia directory ricorsivamente