如何在Linux中通过覆盖现有文件夹来复制文件夹并删除所有旧内容?

如何在Linux中通过覆盖现有文件夹来复制文件夹并删除所有旧内容?

我可以使用rm删除旧文件夹,然后使用cp复制新文件夹。但怎样才能一次性做到呢?

答案1

使用rsync

rsync -av --delete source/ target

target这将删除该目录中与该目录内容不匹配的所有内容source,并另外复制该source目录的内容。

/末尾的尾随source/很重要,因为如果没有它,您将获得一个目录target/source而不是target复制source.

-a(或--archive) 选项可复制rsync时间戳和其他元数据,-v(或--verbose) 选项可rsync进行详细操作。如果没有--delete,则不会删除 中的任何现有内容target(除非它与事物同名,在source这种情况下它将被更新)。

答案2

这是一件事。rm -fr olddir/* ; cp -a newdir/* olddir

相关内容