查找并替换 2 个目录之间的所有相同文件

查找并替换 2 个目录之间的所有相同文件

我想找到dir1中具有相应相同文件名的所有文件dir2,并将它们替换为 中的文件dir2

例如:

dir1: first.txt second.txt
dir2: third.txt first.txt

所以我想从dir1first.txt文件中删除并将其替换为first.txtfrom dir2.

如何使用 Bash 终端实现这一点?

答案1

实际上,有一个命令可以完全满足您的要求。

rsync -av --existing dir2/ dir1/

仅当文件已存在于 dir1 中时,这才会将文件从 dir2 递归复制到 dir1 中。

这些-av选项是您通常用于使用 rsync 复制文件的选项。

--existing选项指示rsync跳过在接收器上创建新文件。

您必须在命令行上的 dir2/ 上添加尾部斜杠,因为rsync斜杠中的大多数命令的行为与 rsync 具有含义不同。

rsync也可以通过网络使用,类似于scp.

rsync可以处理许多其他类型的文件同步、更新和备份任务。

答案2

rsync 可以使用以下--existing选项来做到这一点:

rsync -v --existing dir2/* dir1/

相关内容