在bash中,我需要这样做:
取一个目录中的所有文件 将它们复制到现有目录中
我怎么做呢?我尝试了cp -r t1 t2 (t1和t2都是现有目录,t1中有文件),但它在t2中创建了一个名为t1的目录,我不想这样,我需要t1中的文件直接进入t2。我怎么做呢?
在bash中,我需要这样做:
取一个目录中的所有文件 将它们复制到现有目录中
我怎么做呢?我尝试了cp -r t1 t2 (t1和t2都是现有目录,t1中有文件),但它在t2中创建了一个名为t1的目录,我不想这样,我需要t1中的文件直接进入t2。我怎么做呢?
当前回答
cp dir1/* dir2
或者如果dir1中有目录,也想复制
cp -r dir1/* dir2
其他回答
cp dir1/* dir2
或者如果dir1中有目录,也想复制
cp -r dir1/* dir2
cp -R t1/ t2
源目录上的尾随斜杠稍微改变了语义,因此它复制了内容,但不复制目录本身。它还避免了通配符和不可见文件的问题,Bertrand的答案(复制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之外是否稳定、可移植和可靠,我也不知道它们在未来是否会继续如此)。
你想要的是:
cp -R t1/. t2/
末尾的圆点告诉它复制当前目录的内容,而不是目录本身。此方法还包括隐藏文件和文件夹。
如果你想从一个目录复制一些东西到当前目录,这样做:
cp dir1/* .
这假设您没有试图复制隐藏文件。