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

use*_*919 29 linux

我有文件夹oldnew.

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

但是很少有文件不在new/*但在 中old/*,所以我希望它们保持原样。

如何从 Linux shell 执行此操作?

slh*_*hck 25

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

rsync -avh --dry-run /path/to/new/ /path/to/old/
Run Code Online (Sandbox Code Playgroud)

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

如果对您来说看起来不错,请删除--dry-run参数以真正传输它们。

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


Nir*_*ngh 21

rsync 在这里可能是更好的选择。就像 rsync -a subdir/ ./ 一样简单。检查此unix.stackexchage 答案以获得更好的解决方案

使用 -fcp命令

cp -fR /source/files /dest
Run Code Online (Sandbox Code Playgroud)

抑制 cp 覆盖”提示..

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

 'cp' -rf ./source/* /destination/
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问以下链接:

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