如何将包含文件的文件夹复制到Unix/Linux中的另一个文件夹?

use*_*656 1145 linux cp

我有一些问题要将包含该文件夹中文件的文件夹复制到另一个文件夹中.命令cp -r不会复制文件夹中的文件.

小智 1891

你正在寻找的选项是-R.

cp -R path_to_source path_to_destination/
Run Code Online (Sandbox Code Playgroud)
  • 如果destination不存在,将创建它.
  • -R手段copy directories recursively.您也可以使用,-r因为它不区分大小写.
  • 请注意/根据@ muni764的评论添加尾随的细微差别.

  • 我想说如果你不想包含源代码并且你想确保一切都被复制(符号链接,隐藏文件)而不复制源父文件夹就是使用-ra source /.目的地.这将确保复制文件夹的内容,但不会复制父文件夹本身,这有时很方便.不同的是**/.** (16认同)
  • 我想知道为什么dockerfile中的这个确切命令会将所有源目录文件复制到目标中,而不是仅复制整个目录. (5认同)
  • 我相信最后的'/'会产生影响,这可能会影响您的体验.如果源包含尾部斜杠,它将仅复制目录中的内容.如果它不包含尾部斜杠,它将复制目录,然后复制其中的内容.我的记忆是这种行为因命令而异,也可能是OS的事件.这是[参考](https://unix.stackexchange.com/questions/870/the-slash-after-a-directory-name-on-shell-commands)的更多信息. (4认同)
  • 注意`cp -r src /中源上“斜杠点”的重要性。我知道有人提到它,但我似乎仍然每次都想念它。 (2认同)

Ale*_*x W 364

您正在寻找cp命令.您需要更改目录,以便您不在要复制的目录之外.如果您正在复制的目录已被调用,dir1并且您想将其复制到您的/home/Pictures文件夹:

cp -r dir1/ ~/Pictures/
Run Code Online (Sandbox Code Playgroud)

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

当您不知道如何使用Linux命令时,可以通过键入来参考手册页

man [insert command here]
Run Code Online (Sandbox Code Playgroud)

在终端提示.

此外,要在终端中键入时自动完成长文件路径,您可以Tab在开始键入路径后点击,然后向您显示选项,或者它将插入路径的剩余部分.

  • 为了进一步说明,这里的`-r`选项将递归复制目录. (6认同)
  • OP没有指定他*是*使用`cp -r`命令,但它没有正常工作? (5认同)
  • 我包含有关联机帮助页的信息的原因是这些标志可能依赖于分发.但是,在大多数情况下,它看起来像`-r`,`--recursive`和`-R`是等价的.它也会给出常见的陷阱等,这很好. (4认同)
  • 如果您想要移植复制DIRECTORY而不仅仅是它的内容,请在源文件夹中删除尾部短划线,即.`cp -r dir1~/Pictures /` (4认同)

cIp*_*h3r 102

使用:

$ cp -R SRCFOLDER DESTFOLDER/
Run Code Online (Sandbox Code Playgroud)

  • 如何阅读手册页(手册),`man cp` (10认同)
  • 这就是我做的方式,`demo1_copy`已经不存在```$ ls demo1 demo3 README.md $ cp -R demo1/demo1_copy /``` (4认同)