将文件从一个目录复制到现有目录中

在bash中,我需要这样做:

  1. 把一个目录中的所有文件

  2. 将它们复制到一个现有的目录

我该怎么做呢? 我试过cp -r t1 t2 (t1和t2都是已经存在的目录,t1中有文件),但是在t2里面创build了一个名为t1的目录,我不需要t1中的文件直接进入t2 。 我该怎么做呢?

你想要的是:

 cp -R t1/. t2/ 

最后的点告诉它复制当前目录的内容,而不是目录本身。 此方法还包括隐藏的文件和文件夹。

如果您想从某个目录中复制某些内容到当前目录中,请执行以下操作:

 cp dir1/* . 

这假定你不想复制隐藏的文件。

 cp dir1/* dir2 

或者如果你有你想要复制的dir1目录

 cp -r dir1/* dir2 
 cp -R t1/ t2 

源目录中的尾部斜线略微改变语义,所以它复制内容而不是目录本身。 它也避免了Bertrand的答案中存在的globbing和不可见文件的问题(复制t1/*错过不可见文件,复制你不想要的`t1 / * t1 /.*'复制t1 /。和t1 / ..) 。

根据一些细节,你可能需要做这样的事情:

 r=$(pwd) case "$TARG" in /*) p=$r;; *) p="";; esac cd "$SRC" && cp -r . "$p/$TARG" cd "$r" 

…这基本上改变到SRC目录,并将其复制到目标,然后返回到你从哪里开始。

额外的烦恼是处理相对或绝对的目标。

(这不依赖于cp命令本身的微妙的语义…关于如何处理源规范有或没有尾随…因为我不确定那些稳定,可移植性和可靠性超越GNU cp而且我不知道他们将来会不会继续如此)。