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


23

我有文件夹oldnew

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

但是可能只有很少的文件不在其中,new/*而在中old/*,因此我希望它们保持原样。

我如何从Linux shell做到这一点?

Answers:


18

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-目录


23

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

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

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

如果您觉得--dry-run合适,请删除该参数以将其传输为实数。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.