Unix复制递归,包括所有目录

Unix复制递归,包括所有目录,unix,Unix,我有以下两个目录: ~/A drawable/ imageb.png new/` newimage.png ~/B drawable/ imagec.png 当我使用cp-r~/A/*~/B命令newimage.png及其新/文件夹时,会将imageb.png复制到~/B,但是imageb.png不会复制到~/B/drawable 您能解释一下为什么会出现这种情况,以及我如何避免这种情况吗?使用tar而不是cp: (cd

我有以下两个目录:

~/A
    drawable/
        imageb.png
    new/`
        newimage.png

~/B
    drawable/
        imagec.png
当我使用
cp-r~/A/*~/B
命令newimage.png及其新/文件夹时,会将imageb.png复制到~/B,但是imageb.png不会复制到~/B/drawable

您能解释一下为什么会出现这种情况,以及我如何避免这种情况吗?

使用tar而不是cp:

(cd A ; tar cf - *) | (cd B ; tar xf -)
或者更紧凑(如果您使用的是GNU tar):


如果您在linux上,可以使用
-r
选项

例如:
cp-r~/A/~/B/

如果您使用的是BSD,则可以使用
-R
选项

例如:
cp-R~/A/~/B/

有关您应该通过哪个选项的详细信息,请参阅
man cp


还要注意的是,如果您没有对该文件的权限,则会阻止复制文件。

您是在UNIX上还是在Linux上?这些是常规文件或链接吗?这可能不会直接导致您的问题,但我会使用
cp-r~/A~/B
,而不使用
*
。如果您尝试复制到不存在的目录,例如使用
cp-r~/a~/new_B
,会发生什么情况?
tar cC A -f - . | tar xC B -f -