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.