如何将带有文件的文件夹复制到Unix / Linux中的另一个文件夹?[关闭]


1191

我在将包含该文件夹中文件的文件夹复制到另一个文件夹时遇到一些问题。Command cp -r不会复制文件夹中的文件。




我希望可以将其迁移到更多关于SE的SE。
jrh

6
Bash编程是热门话题
xskxzr

Answers:


1978

您正在寻找的选项是-R

cp -R path_to_source path_to_destination/
  • 如果destination不存在,将创建它。
  • -R意味着copy directories recursively。您也可以使用,-r因为它不区分大小写。
  • 请注意/根据@ muni764的注释添加尾随的细微差别。

5
我想知道为什么dockerfile中的此确切命令会将所有源目录文件复制到目标,而不是仅复制整个目录。
霍尔姆斯

4
我相信最后的“ /”会有所作为,这也许可以解释您的经验。如果源中包含斜杠,它将仅复制目录中的内容。如果不包含斜杠,它将同时复制目录,然后复制目录中的内容。我的记忆是,此行为因命令而异,可能因操作系统而异。这是更多信息的参考
OllieBrown

23
我想说的是,如果您不想包括源代码,并且想要确保在不复制源父文件夹的情况下复制所有内容(符号链接,隐藏文件),请使用-ra source /。目的地。这将确保复制文件夹的内容,而不是复制父文件夹本身,这有时很方便。和的区别是/。
muni764

如果要复制的目录是符号链接,这似乎也可以正常工作,这就是我的用例。
Gdalya

3
请注意,“斜线点”在您的来源中非常重要,cp -r src/. dest因为我知道它已被提及,但我每次似乎仍然会遗漏它。
bbeecher

368

您正在寻找cp命令。您需要更改目录,以便您不在要复制的目录之外。

如果您要复制的目录被调用,dir1并且您想将其复制到/home/Pictures文件夹中:

cp -r dir1/ ~/Pictures/

Linux是区分大小写的,并且还需要/每个目录之后都知道它不是文件。 ~是终端中的特殊字符,它会自动评估为当前用户的主目录。如果您需要知道所在目录,请使用命令pwd

当您不知道如何使用Linux命令时,可以通过输入以下内容来获得手册页:

man [insert command here]

在终端提示时。

另外,要在输入终端时自动完成长文件路径,您可以Tab在开始输入路径后点击,然后会出现选择或插入路径的其余部分。


6
为了进一步说明,此-r选项将递归复制目录。
TVann

5
OP是否未指定他正在使用该cp -r命令,但未正常运行?
MD XF

4
我之所以包含有关联机帮助页的信息,是因为这些标志可能取决于发行版。然而,在大多数情况下,它出现-r--recursive-R是等价的。它还会带来常见的陷阱,等等。
亚历克斯W

6
如果要便携式复制目录,而不仅仅是目录的内容,请在源文件夹(即)中省略尾划线。cp -r dir1 ~/Pictures/
mehtunguh

105

采用:

$ cp -R SRCFOLDER DESTFOLDER/

4
这就是我这样做的方式,并且demo1_copy还不存在$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.