如何将一个目录的所有内容复制到另一个目录中?
例如:
$ 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
如果不排除父目录,您最终也会获得..
目标目录中的所有内容。