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.

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

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/

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.