17

Скажем, у меня есть две папки с различным содержанием, foo и bar . Как я могу объединить bar в foo чтобы:

  • Файлы в foo , которых нет в bar остаются нетронутыми.
  • Файлы в bar , которые не находятся в foo , теперь находятся в foo .
  • Файлы в foo , которые также находятся в bar , были заменены файлами из bar .

3 ответа3

24

Если я правильно читаю ваши требования, нет файлов, которые переходят из foo в bar . Похоже, вы можете просто скопировать содержимое bar в foo , позволяя перезаписывать файлы по мере необходимости (поведение по умолчанию).

$ cp -R /path/to/bar/* /path/to/foo
9

У меня была очень похожая потребность: объединить bar в foo но файлы, находящиеся в bar не должны перезаписывать совпадающие файлы в foo . В этом случае:

$ cp -R -n /path/to/bar/* /path/to/foo/
1

Попробуй это :

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

От man cp
-u, --update копировать, только если файл SOURCE новее, чем файл назначения, или когда файл назначения отсутствует
-R, -r, --recursive копировать каталоги рекурсивно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .