Unix: jak połączyć dwa katalogi

17

Powiedzmy, że mam dwa foldery z różnymi treściami fooi bar. Jak mogę połączyć barsię foowięc, że:

  • Pliki foo, których nie barma, są nietknięte.
  • Pliki bar, których nie ma w, foosą teraz w foo.
  • Pliki w footym również barzostały zastąpione plikami z bar.
Svish
źródło

Odpowiedzi:

25

Jeśli poprawnie czytam Twoje wymagania, nie ma plików, które można przejść foodo bar. Wygląda na to, że możesz po prostu skopiować zawartość bardo foo, pozwalając na zastąpienie plików w razie potrzeby (jest to domyślne zachowanie).

$ cp -R /path/to/bar/* /path/to/foo
coneslayer
źródło
Tak, nie byłem pewien co do rekurencyjności i tego, jak nie skończyć z barem w foo jako foo / bar. Ale wydaje się, że tego właśnie chcę :)
Svish,
1
Racja, gdybyś to zrobił cp -R /path/to/bar /path/to/foo, utworzyłby katalog barwewnątrz foo. Subtelny punkt.
coneslayer
1
Uwaga: pominie ukryte pliki / katalogi w bar(tj. O nazwach rozpoczynających się od kropki - .) z powodu działania globowania powłoki.
Kamil Maciorowski
9

Miałem bardzo podobną potrzebę: scalić barsię, fooale pliki, które są, bar nie powinny zastępować pasujących plików foo. W tym przypadku:

$ cp -R -n /path/to/bar/* /path/to/foo/
Joel Aufrecht
źródło
1

Spróbuj tego :

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

Z man cp
-u, --aktualizuj kopię tylko wtedy, gdy plik SOURCE jest nowszy niż plik docelowy lub gdy brakuje pliku docelowego
-R, -r, - rekurencyjne katalogi kopii rekurencyjnie

drew7721
źródło
1
Dwie osoby zasugerowały już polecenie cp, więc twoja odpowiedź wydaje się zbędna. Poświęcenie kilku minut na wyjaśnienie, w jaki sposób argumenty, które wybrałeś, działają lepiej niż inne sugestie, sprawi, że twoja odpowiedź będzie bardziej pomocna.
music2myear
1
Flaga -u aktualizuje się tylko wtedy, gdy plik w źródle jest nowszy niż plik w miejscu docelowym. Patrz: man cp -> -u, --update: kopiuj tylko wtedy, gdy plik SOURCE jest nowszy niż plik docelowy lub gdy brakuje pliku docelowego
drew7721
Dodaj tę informację do pytania (użyj Edytuj bezpośrednio pod postem), aby inni mogli zobaczyć te pomocne informacje w samej odpowiedzi.
music2myear