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.