Unix: come unire due directory


17

Diciamo che ho due cartelle con vari contenuti, foo e bar. Come posso unire bar in foo così che:

  • File in foo che non sono in bar sono intatti.
  • File in bar che non sono in foo sono ora in foo.
  • File in foo che sono anche in bar sono stati sostituiti dai file di bar.

Risposte:


24

Se sto leggendo le tue richieste correttamente, non ci sono file da cui partire foo a bar. Sembra che tu possa semplicemente copiare il contenuto di bar a foo, lasciandolo sovrascrivere i file se necessario (il suo comportamento predefinito).

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

Sì, quello di cui ero incerto era la ricorsività e il modo di non finire con l'avere bar in foo come bar. Ma questo sembra essere quello che voglio :)
Svish

1
Giusto, se l'hai appena fatto cp -R /path/to/bar /path/to/foo creerebbe una directory bar dentro foo. Punto sottile
coneslayer

1
Nota: ometterà i file / directory nascosti in bar (cioè con nomi che iniziano con un punto - . ) a causa di come funziona il guscio globbing.
Kamil Maciorowski

9

Ho avuto un bisogno molto simile: unire bar in foo ma i file che sono in bar non dovrebbe sovrascrivi i file corrispondenti in foo. In questo caso:

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

1

Prova questo :

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

A partire dal man cp
-u, --aggiornamento copia solo quando il file SOURCE è più recente del file di destinazione o quando manca il file di destinazione
-R, -r, --recursive copiare le directory in modo ricorsivo


1
Due persone hanno già suggerito il comando cp e quindi la tua risposta sembra superflua. Prendendo alcuni minuti per spiegare come gli argomenti che hai selezionato fanno un lavoro migliore rispetto agli altri suggerimenti ti aiuteranno a rendere la tua risposta più utile.
music2myear

1
Il flag -u si aggiorna solo se il file nella sorgente è più recente di quello nella destinazione. Vedi: man cp - & gt; -u, --update: copia solo quando il file SOURCE è più recente del file di destinazione o quando manca il file di destinazione
drew7721

Aggiungi tali informazioni alla domanda (usa Modifica direttamente sotto il tuo post) in modo che le persone possano vedere le informazioni utili nella risposta stessa.
music2myear
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.