使用“cp”命令复制目录内容

使用“cp”命令复制目录内容

如何将一个目录的所有内容复制到另一个目录中?

例如:

$ cd /home/newuser
$ cp -a /backup/olduser/* .

上述问题是,通配符模式 '*' 与隐藏目录 '.' 和 '..' 匹配,最终在 'newuser' 内得到目录 'olduser' 及其内容。

你也可以做这样的事情:

$ rmdir /home/newuser
$ cp -a /backup/olduser /home/newuser

但是如果 newuser 已经包含一些默认文件和目录怎么办?

仅使用基本的“cp”命令和 shell 将一个目录的内容移动到另一个目录的最简单、最正确、最容易记住且不混乱的方法是什么?

答案1

尝试:

cp -ra /backup/olduser/. /home/newuser

答案2

两个目录a和b。

两者都有文件。

您位于包含 a 和 b 的目录中。

cp -r ./a b

-r= 递归地。

答案3

请记住,默认情况下cp复制第一个目录进入如果第二个目录存在,则为第二个目录。

例如cp -r a b将复制目录 a放入b。如果b不存在,则将使用 的内容创建a

如果你想复制内容a(例如,b将整个文件系统复制到挂载点时)使用:

cp -r a/. b

正如前面的回答一样。

还请注意-a,在其他一些答案中使用的与相同,-dr --preserve=all并将保留时间戳、上下文和扩展属性。

答案4

这将复制普通文件和隐藏文件,但排除父目录(..):

cd /directory/to/copy
cp -r * .[^.]* /destination/directory

如果不排除父目录,您最终也会获得..目标目录中的所有内容。

相关内容