将文件从一个目录复制到现有目录中
在bash中,我需要这样做:
-
把一个目录中的所有文件
-
将它们复制到一个现有的目录
我该怎么做呢? 我试过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
而且我不知道他们将来会不会继续如此)。