使用“mv”或“ditto”在 OS X 中合并文件夹

使用“mv”或“ditto”在 OS X 中合并文件夹

习惯了 Windows 的操作方式后,我发现 OS X 没有合并功能——移动意味着替换文件夹。虽然这很有道理,但我怀念合并!


我有两个 Wordpress 目录,1 包含默认源,2 包含带有插件自定义主题等的工作版本。

我想看看这两者之间的区别,所以我把它放在 SVN 上。文件夹 1 已经启动,现在理论上我应该简单地将 2 的内容与 1 合并,方法是用 2 的内容替换所有内容,但保留隐藏的 SVN 文件不变。

不幸的是,OS X 在移动时替换了文件夹,因此我的 SVN 客户端变得疯狂并且不再理解文件夹结构。

因此,我相信我的选择是mvditto,但是在我的处境下您会使用哪一个以及如何使用?

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选项

请随意调整以适应您的情况(我猜folder1folder2是反过来的)。

您可以通过调用以下命令来尝试查看该命令的作用:

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

开关dry-run会向您展示它的功能。


不要忘记反斜杠具有特殊含义,因此folder2/目标与 不同folder2。查看 的手册页以rsync了解用法和更多选项。

还建议-P(根据--helpsame as --partial --progress)添加show progress during transferkeep partially transferred files(如果发生故障,这对于重试很有用)。

答案2

您可以按照@slhck 所说的去做,或者您也可以直接使用cp

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

相关内容