如何在 Mac 上合并两个同名文件夹而不丢失文件

你有两个同名的文件夹:Mac 上的旅行照片和云盘里一份较旧的副本,或者笔记本上的项目和 U 盘里的那个版本。你想要的是一个包含两边所有内容的文件夹。可是在“访达”里把一个拖到另一个所在的位置,对话框问的却是要不要替换已经在那里的文件夹。替换不会合并任何东西:原来的文件夹被新的换掉,只在它里面的文件也随之消失。
要在“访达”中合并两个文件夹,请按住 Option 键(⌥),把一个文件夹拖到包含另一个文件夹的文件夹中,然后点按“合并”。不过这个按钮只在某些情况下出现。不出现时,可以用“终端”里的 ditto 或 rsync 来合并;而像 Folia Files 这样的文件管理器,每当两个同名文件夹相遇都会提供合并,两个同名文件保留较新的那个,被替换的放进废纸篓。
为什么“替换”是错误的按钮
当你把文件夹拷贝或移动到已有同名文件夹的位置时,“访达”给出的是替换:保留你正在拖移的文件夹,移除原来那个及其中的全部内容。只存在于旧文件夹里的文件,不会被移到新文件夹中。
从 Windows 转过来的用户会在这里吃一惊:文件资源管理器会自动合并两个同名文件夹,只在遇到同名文件时才询问。“访达”则只有在你要求时才会合并。
在“访达”中合并文件夹
- 打开包含目标文件夹的那个文件夹,以便把文件夹放在它旁边。不要放到目标文件夹本身上:被拖移的文件夹只会进到它里面去。
- 按住 ⌥(Option)键,把另一个文件夹拖到这个窗口中再松开。
- 在提示已存在同名文件夹的对话框中,点按合并。
在同一个磁盘上,Option 键会让“访达”拷贝而不是移动,而“合并”正是在拷贝时出现:“访达”所有询问“合并还是替换”的提示都说的是“正在拷贝的文件夹”,而移动时的提示只问是否替换。合并完成后,原来的文件夹仍在原处:检查过结果后,再自己删除它。
“合并”没有出现时
Apple 自己的使用手册给出了两条限制:
- 只有当其中一个文件夹包含另一个文件夹中没有的项目时,才会出现“合并”。
- 如果两个文件夹中有同名文件的不同版本,就只能选择“停止”或“替换”。
“访达”不让你逐个文件做决定,也不会在你选择之前显示哪些地方不同。
在“终端”中合并文件夹
macOS 自带的两条命令可以合并文件夹,而且不会询问任何问题。请先在副本上试一试。
ditto
ditto ~/Desktop/Photos ~/Documents/Photos
目标文件夹已经存在时,ditto 会把源文件夹合并进去,子文件夹也一样。同名文件会被覆盖,不管哪一个更新,而且被覆盖的文件不会进废纸篓。
rsync
rsync -aEuv --dry-run ~/Desktop/Photos/ ~/Documents/Photos/
-a拷贝子文件夹,并保留日期和权限;-E还会拷贝扩展属性,“访达”的标签就保存在那里。-u在目标中已有的文件更新时跳过该文件。--dry-run只列出将要拷贝的内容。去掉这个选项再运行同一条命令,就会真正合并。- 源文件夹后面的斜杠很重要:它拷贝的是 Photos 里面的内容,而不是 Photos 文件夹本身。
- 不要加
--delete,它会删除目标中所有源里没有的东西。
rsync 替换的较旧文件会被覆盖。加上 --backup 可以保留它,文件名末尾会多一个 ~。
在 Folia Files 中合并文件夹
在 Folia Files 中,拷贝或移动文件夹和在“访达”里一样:拖到另一个面板或文件夹,使用 ⌘C 和 ⌘V,或者选择文件 › 拷贝到另一个面板(F5)。如果那里已有同名文件夹,对话框会把两者并排显示:待拷贝和已存在,附上项目数量和日期,较新的一方标有较新。

每个按钮的作用
- 两者都保留是默认按钮:即使对话框在你于别处打字时弹出,按 ↩ 也不会毁掉任何东西。
- 合并把内容添加到现有文件夹中,两边的子文件夹也会一并合并。两个同名文件保留较新的一个:如果较新的是拷贝过来的那个,原有的旧文件会进废纸篓;如果原有的文件同样新或更新,它会留下,拷贝过来的那个则不拷贝。
- 替换会换掉整个文件夹,但被替换的文件夹要等新文件夹完全拷贝好后才进废纸篓。拷贝失败或被你取消时,旧文件夹仍留在原处。
- 跳过略过这个项目、继续处理其他项目;停止则结束整个操作。
如果相遇的是两个文件而不是两个文件夹,合并会换成如果较新:只有拷贝的项目更新时才替换。有多个冲突时,勾选应用到其他…个冲突即可一次全部处理。
合并不仅适用于拷贝,也适用于移动。所有内容都会进入现有文件夹,之后被移动的文件夹连同里面剩下的较旧重复文件一起进入废纸篓。App 和其他包被当作单个文件处理,其内部永远不会被合并。
还有几条规则保护着其余的文件。
- 合并永远不会彻底删除文件:如果某个文件无法放进废纸篓(某些网络磁盘就是这样),它会留在原处,Folia Files 也会告诉你。
- 你的磁盘、个人文件夹和 macOS 的文件夹永远不会被替换:选择“替换”时,Folia Files 会建议改用“合并”或“两者都保留”。
- 拷贝到外置磁盘或服务器的合并如果中途断开,可以从中断处继续。
合并做不到的一件事:它不能用 ⌘Z 撤销,不过被它替换的每个文件都在废纸篓里。其余内容请看安全拷贝与历史记录页面。以上功能在 Folia Files 的两个版本中都有:官网版和 Mac App Store 版。
合并前先查看差异
合并时所说的“较新”只是指修改日期更晚:最后一次存储的文件会胜出,即使它并不是你想保留的版本。所以最好先看一看。
工具 › 比较…(⇧⌘K)会比较两个文件夹及其子文件夹,并把每个项目标为仅左侧、仅右侧、不同或相同。大小或日期不同的文件即视为“不同”;勾选比较内容(较慢,但精确)则会逐字节检查。随后,将所选内容拷贝到右侧 →只拷贝你选中的项目,同样经过这个对话框。

该用哪种方法
- 文件只存在于其中一个文件夹:在“访达”中按住 ⌥ 拖移,然后选“合并”。
- 两边都有同名文件,而你想保留较新的:使用带
-u的 rsync,或使用 Folia Files 的“合并”,它会把被替换的文件放进废纸篓。 - 一次又一次合并同样的两个文件夹:与其手动合并,不如让它们保持同步。


