Jak zamienić całą zawartość z jednego folderu na inny

23

Mam foldery oldi new.

Chcę zamienić całą zawartość old/*na new/*. W tych folderach może znajdować się wiele podkatalogów.

Ale może być kilka plików, których nie ma, new/*ale są old/*, więc chcę, aby pozostały takie, jakie są.

Jak mogę to zrobić z powłoki Linux?

użytkownik105919
źródło

Odpowiedzi:

18

rsync byłby prawdopodobnie lepszym rozwiązaniem tutaj. To tak proste, jak rsync -a subdir / ./. sprawdź tę odpowiedź na unix.stackexchage, aby uzyskać lepsze rozwiązania

użyj -fz cppoleceniem

cp -fR /source/files /dest

pomiń polecenie cp, aby zastąpić ”.

Aby zastąpić alias cp, możesz po prostu zawrzeć go w cudzysłowie:

 'cp' -rf ./source/* /destination/

Aby uzyskać więcej informacji, skorzystaj z poniższych linków:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory

Niranjan Singh
źródło
23

Zastosowanie rsync. Zsynchronizuje katalogi w jednym kierunku. Tak więc, jeśli chcesz zaktualizować oldfolder ze wszystkim new, ale zachowaj to, co tam jest, po prostu użyj:

rsync -avh --dry-run /path/to/new/ /path/to/old/

Spowoduje to, po pierwsze, wyświetlenie listy plików, które zostaną przesłane. W takim przypadku: wszystko znalezione w newzostanie skopiowane old, chyba że już tam jest. Wszystko oldzostaje bez zmian.

Jeśli wygląda ci to dobrze, usuń --dry-runargument, aby przekazać go naprawdę.

Te -avhflagi wystarczy włączyć tryb archiwum (które zachowania znaczników czasu, itp), gadatliwość i czytelne dla człowieka plików wielkościach. Nic nie zostanie usunięte z miejsca docelowego, chyba że podasz --deleteflagę. Skonsultuj się man rsyncpo więcej informacji.

slhck
źródło