在bash中,我需要这样做:
获取目录中的所有文件
将它们复制到现有目录
我该怎么做?我试过cp -r t1 t2
(t1和t2都是现有的目录,t1里面有文件)但是它在t2里面创建了一个名为t1的目录,我不希望这样,我需要t1中的文件直接进入t2 。我该怎么做?
答案 0 :(得分:339)
你想要的是:
cp -R t1/. t2/
最后的点告诉它复制当前目录的内容,而不是目录本身。此方法还包括隐藏文件和文件夹。
答案 1 :(得分:30)
如果要将某个目录中的内容复制到当前目录中,请执行以下操作:
cp dir1/* .
这假设您没有尝试复制隐藏文件。
答案 2 :(得分:28)
cp dir1/* dir2
或者,如果你在dir1中有你想复制的目录
cp -r dir1/* dir2
答案 3 :(得分:8)
假定t1是其中包含文件的文件夹,t2是空目录。您想要的是这样的:
sudo cp -R t1/* t2/
请记住,对于第一个示例,t1和t2必须是完整路径或相对路径(基于您所在的位置)。如果需要,可以导航到空文件夹(t2)并执行以下操作:
sudo cp -R t1/* ./
或者您可以导航到包含文件(t1)的文件夹,然后执行以下操作:
sudo cp -R ./* t2/
注意:*符号(或通配符)代表所有文件和文件夹。 -R标志是递归的(所有内容都在其中)。
答案 4 :(得分:3)
cp -R t1/ t2
源目录上的尾部斜杠稍微改变了语义,因此它复制内容而不是目录本身。它还避免了Bertrand的答案所带来的globbing和不可见文件的问题(复制t1/*
错过了不可见文件,复制`t1 / * t1 /.*'复制t1 /。和t1 / ..,你没有要)。
答案 5 :(得分:2)
根据某些细节,您可能需要执行以下操作:
r=$(pwd)
case "$TARG" in
/*) p=$r;;
*) p="";;
esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"
...这基本上会更改为SRC目录并将其复制到目标,然后返回到您开始的时间。
额外的烦恼是处理相对或绝对目标。
(这不依赖于cp
命令本身的细微语义...关于它如何处理源规范有或没有尾随/ ...因为我不确定它们是否稳定,可移植,除了GNU cp
之外还可靠,我不知道将来它们是否还会如此。
答案 6 :(得分:1)
这会将 folder1
的所有内容复制到现有的 folder2
:
cp -r folder1/. folder2
答案 7 :(得分:0)
对于某个目录内的目录,将使用全部内容,因为它将所有内容从“ folder1”复制到某个目录内的新目录“ folder2”。
$(pwd)将获得当前目录的路径。
请注意folder1后面的点(。)以获取folder1内的所有内容
cp -r $(pwd)/folder1/. $(pwd)/folder2