Привыкнув к способу Windows, я только что узнал, что в OS X нет функции слияния — перемещение означает замену папки. Хотя это и имеет смысл, я скучаю по слиянию!
У меня есть два каталога Wordpress, один из которых содержит исходный код по умолчанию, а второй — рабочую версию с плагинами, пользовательской темой и т. д.
Я хочу увидеть разницу между этими двумя, поэтому я помещаю их в SVN. Папка 1 уже создана, теперь, теоретически, я должен просто объединить содержимое 2 с 1, заменив все содержимым 2, но оставив скрытые файлы SVN нетронутыми.
К сожалению, OS X при перемещении заменяет папку, так что мой SVN-клиент сходит с ума и больше не понимает структуру папок.
Итак, я полагаю, что у меня есть варианты mv
и ditto
, но какой из них вы бы использовали в моей ситуации и как?
sudo mv wordpress /Documents/svn/wwwholiday/trunk/wordpress
Я хочу mv
перезаписать все, что найдет, но оставить в покое то, что уже находится в папке 1 и не имеет дубликатов в папке 2.
решение1
Самый простой способ объединить папки одним способом, например
Объединить все из папки 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
. Проверьте страницу руководства rsync
по использованию и другим параметрам.
Также рекомендуется -P
(согласно --help
, same as --partial --progress
), который добавляет show progress during transfer
и keep partially transferred files
(что полезно для повторных попыток в случае сбоя).
решение2
Вы можете сделать это, как говорит @slhck, или просто использовать cp
.
$sudo cp -R wordpress/ /Documents/svn/wwwholiday/trunk/wordpress