我想找到dir1
中具有相应相同文件名的所有文件dir2
,并将它们替换为 中的文件dir2
。
例如:
dir1: first.txt second.txt
dir2: third.txt first.txt
所以我想从dir1
旧first.txt
文件中删除并将其替换为first.txt
from 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/