6

Привыкший к способу Windows, я только что обнаружил, что OS X не имеет функции слияния - перемещение означает замену папки. Хотя это имеет смысл, я скучаю по слиянию!


У меня есть два каталога Wordpress, 1 содержит исходный код по умолчанию, 2 содержит работающую версию с пользовательской темой плагинов и т.д.

Я хочу видеть разницу между этими двумя, поэтому я помещаю это в SVN. Папка 1 уже запущена, теперь теоретически я должен просто объединить содержимое 2 с 1, заменив все на содержимое 2, но оставив скрытые файлы SVN без изменений.

К сожалению, OS X при перемещении заменяет папку, так что мой SVN-клиент сходит с ума и больше не понимает структуру папки.

Итак, я считаю, что у меня есть варианты mv и ditto , но какой из них вы бы использовали в моей ситуации и как?

sudo mv wordpress /Documents/svn/wwwholiday/trunk/wordpress

Я хочу, чтобы mv перезаписал все, что нашел, но оставил в покое все, что уже находится в папке 1 и не имеет дубликатов в папке 2.

2 ответа2

12

Самый простой способ объединить папки одним способом, например

Объединить все из папки 1 → папка 2

будет использовать rsync .

rsync -avh folder1/* folder2/

Это будет:

  • переместить все файлы, которые существуют только в папке 1 и ее подкаталогах в папку 2
  • ничего не перезаписывать в папке 2, если она уже есть
  • перезаписать файлы, которые были изменены, если вы не добавите --ignore-existing
  • не удалять ничего из папки 2, если вы не добавите опцию --delete

Не стесняйтесь адаптировать это к вашей ситуации (я думаю, что folder1 и folder2 наоборот).

Вы можете попытаться увидеть, что делает команда, вызвав:

rsync -avh --dry-run folder1/ folder2/

Переключатель dry-run показывает, что он делает.


Не забывайте, что обратная косая черта имеет особое значение, поэтому folder2/ качестве места назначения не совпадает с folder2 . Проверьте man-страницу rsync для использования и других опций.

Также рекомендуется использовать -P (в соответствии с --help , то same as --partial --progress), который добавляет show progress during transfer и keep partially transferred files (что полезно при повторных попытках в случае сбоя).

0

Вы можете сделать это, как говорит @slhck, или вы можете просто использовать cp .

$sudo cp -R wordpress/ /Documents/svn/wwwholiday/trunk/wordpress

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