我想将一个目录复制到另一个目录中。
例如,cp -r dir1 dir2
将 dir1 的内容复制到 dir2 中。我想将 dir1 本身复制到 dir2 中,这样如果我ls dir2
输出它dir1
,而不是 dir1 内部的任何内容。
答案1
就像你做的那样:
cp -r dir1 dir2
你将会有目录1(及其内容)里面目录2。如果您不相信,请尝试;-)。
复制内容的命令目录1进入目录2是:
cp -r dir1/* dir2
答案2
查看cp(还有mv)的手册:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
如果你这样做cp a b
,那么如果 b 不存在,你会得到cp -T a b
,但如果 b 存在并且是一个目录,你会得到cp -t b a
,否则错误。
例子
mkdir empty
cd empty
mkdir a
touch a/a-file
cp -r a b #this creates b a copy of a
cp -r a b #this time it makes a copy of a called a in b (b/a)
实施例2
mkdir empty
cd empty
mkdir a
touch a/a-file
cp -r -T a b #this creates b, a copy of a
cp -r -T a b #updates b (no effect in this case)
实施例3
mkdir empty
cd empty
mkdir a
touch a/a-file
mkdir b
cp -r -t b a #copy a into b
cp -r -t b a #updates a/b (no effect in this case)
答案3
另外,请确保第一个参数(要复制的目录)不以正斜杠字符结尾/
。在这种情况下,某些版本cp
(例如在 MacOS 上)将其视为/*
并仅复制目录的内容,而不是整个目录。当您使用键自动完成目录名称时,通常会添加正斜杠Tab。
复制整个目录 dir1
进入目录dir2
:
cp -r dir1 dir2
复制目录内容 dir1
进入目录dir2
:
cp -r dir1/ dir2
它相当于:
cp -r dir1/* dir2