在bash我需要这样做:
获取目录中的所有文件
将它们复制到现有目录中
我该怎么做呢?我试过 cp -r t1 t2 (t1和t2都是现有目录,t1中有文件)但是它在t2里面创建了一个名为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 /.* ' copies t1/. and t1/.., which you don't想要) .
t1/*
根据某些细节,您可能需要执行以下操作:
r=$(pwd) case "$TARG" in /*) p=$r;; *) p="";; esac cd "$SRC" && cp -r . "$p/$TARG" cd "$r"
...这基本上会更改为SRC目录并将其复制到目标,然后返回到您启动的任何位置 .
额外的烦恼是处理相对或绝对目标 .
(这不依赖于 cp 命令本身的细微语义......关于它如何处理源规范有或没有尾随/ ...因为我不确定它们是否稳定,可移植且可靠,而不仅仅是GNU cp 我将来不会继续这样做 . )
cp
你想要的是:
cp -R t1/. t2/
最后的点告诉它复制当前目录的内容,而不是目录本身 . 此方法还包括隐藏文件和文件夹 .
假设t1是包含文件的文件夹,t2是空目录 . 你想要的是这样的:
sudo cp -R t1/* t2/
请记住,对于第一个示例,t1和t2必须是完整路径或相对路径(基于您的位置) . 如果需要,可以导航到空文件夹(t2)并执行以下操作:
sudo cp -R t1/* ./
或者您可以导航到包含文件的文件夹(t1)并执行以下操作:
sudo cp -R ./* t2/
注意:*符号(或通配符)代表所有文件和文件夹 . -R标志表示递归(所有内容中的所有内容) .
6 回答
如果要将某个目录中的内容复制到当前目录中,请执行以下操作:
这假设您没有尝试复制隐藏文件 .
或者如果您在dir1中有目录,那么您也想要复制
源目录上的尾部斜杠稍微改变了语义,因此它复制内容但不复制目录本身 . 它还避免了Bertrand的答案所具有的globbing和不可见文件的问题(复制
t1/*
错过了不可见文件,复制`t1 / * t1 /.* ' copies t1/. and t1/.., which you don't想要) .根据某些细节,您可能需要执行以下操作:
...这基本上会更改为SRC目录并将其复制到目标,然后返回到您启动的任何位置 .
额外的烦恼是处理相对或绝对目标 .
(这不依赖于
cp
命令本身的细微语义......关于它如何处理源规范有或没有尾随/ ...因为我不确定它们是否稳定,可移植且可靠,而不仅仅是GNUcp
我将来不会继续这样做 . )你想要的是:
最后的点告诉它复制当前目录的内容,而不是目录本身 . 此方法还包括隐藏文件和文件夹 .
假设t1是包含文件的文件夹,t2是空目录 . 你想要的是这样的:
请记住,对于第一个示例,t1和t2必须是完整路径或相对路径(基于您的位置) . 如果需要,可以导航到空文件夹(t2)并执行以下操作:
或者您可以导航到包含文件的文件夹(t1)并执行以下操作:
注意:*符号(或通配符)代表所有文件和文件夹 . -R标志表示递归(所有内容中的所有内容) .