这不是一个问题,而是我对不同的 cp -r 行为感到好奇。这是在最新的 Ubuntu 上。我在一个包含多个子目录的目录中有一个过时的副本。我想通过简单地用较新的副本覆盖目录来更新过时的副本。添加新文件并简单地覆盖相同的文件。
所以一开始我是这么做的:
$cp -r <path>/curr_dir <path>/destination_dir
curr_dir 中的新文件被添加了,但是同名文件没有更新,嗯?
但是,如果我:
$cd <path>/curr_dir
$cp -r * <path>/destination_dir/
然后添加较新的文件并覆盖过时的文件。
为什么会有这种差异?我检查了我的 .bashrc 和 .profile,没有看到 cp 命令的任何特殊别名。
我肯定遗漏了什么。有什么评论或想法吗?
谢谢
答案1
在您的案例中使用 cp 并不是您真正想要的:首先,它不会删除不再存在的文件。您想要的是rsync
:
rsync -a --delete /source/directory/ /destination/directory/
注意结尾的斜线,它们做事情。
添加-v
查看进度的选项,如果您想测试,--dry-run
也请添加该选项。