习惯了 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 中没有重复的内容。
答案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