复制目录而不仅仅是内容

Eri*_*rus 2 directory recursive file-copy

我想将一个目录复制到另一个目录中。

例如,cp -r dir1 dir2将 dir1 的内容复制到 dir2 中。我想将 dir1 本身复制到 dir2 中,以便如果我ls dir2将输出dir1而不是 dir1 中的任何内容。

小智 5

就像你做的那样:

cp -r dir1 dir2

并且您将在dir2 中dir1(及其内容)。如果您不相信,请尝试;-)。

dir1 的内容复制到dir2的命令是:

cp -r dir1/* dir2

  • @EricMajerus 你对原因的解释没有意义。我添加了一个新答案,这可能会解释一些事情,可能是您的测试顺序,并且在第一个测试后没有清理,导致第二个测试的行为不同。 (2认同)

ctr*_*lor 5

查看cp(还有mv)的手册:

   cp [OPTION]... [-T] SOURCE DEST
   cp [OPTION]... SOURCE... DIRECTORY
   cp [OPTION]... -t DIRECTORY SOURCE...
Run Code Online (Sandbox Code Playgroud)

如果你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)
Run Code Online (Sandbox Code Playgroud)

实施例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)
Run Code Online (Sandbox Code Playgroud)

实施例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)
Run Code Online (Sandbox Code Playgroud)