如何用另一个文件夹替换一个文件夹中的所有内容

如何用另一个文件夹替换一个文件夹中的所有内容

我有文件夹oldnew

我想将 中的所有内容替换old/*new/*。这些文件夹中可以有许多子目录。

但是可能有一些文件不在new/*但在old/*,所以我希望它们保持原样。

我怎样才能从 Linux shell 中做到这一点?

答案1

rsync 可能是一个更好的选择。它很简单,只需 rsync -a subdir/ ./。请查看此unix.stackexchage 答案寻找更好的解决方案

-fcp命令一起使用

cp -fR /source/files /dest

抑制 cp 覆盖”提示..

要覆盖 cp 的别名,您只需将其括在引号中:

 'cp' -rf ./source/* /destination/

更多信息请点击以下链接:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory

答案2

使用rsync。它将在一个方向上同步目录。因此,如果您想old用 中的所有内容更新文件夹new,但保留其中的内容,只需使用:

rsync -avh --dry-run /path/to/new/ /path/to/old/

在第一种情况下,这将仅输出将要传输的文件列表。在这种情况下:在 中找到的所有内容new都将复制到old,除非它已经存在。 中的所有内容old保持原样。

如果您觉得没问题,请删除该--dry-run参数以真正地传输它们。

这些-avh标志仅启用存档模式(将保留时间戳等)、详细程度和人性化的文件大小。除非您指定该--delete标志,否则不会从目标中删除任何内容。请咨询man rsync以获取更多信息。

答案3

如果您想更改文件夹的名称,请尝试一次,没有命令可以重命名文件/文件夹,mv 命令用于将旧目录移动到新目录,因此重命名成功。

mkdir new sudo mv -fr 旧/* 新/

相关内容