Использование «mv» или «ditto» для объединения папок в OS X

Использование «mv» или «ditto» для объединения папок в OS X

Привыкнув к способу 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

Связанный контент