You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

cp -R -n递归复制目录内容出错,求正确命令写法

解决cp递归复制文件夹内容时的目录嵌套问题

你遇到的问题其实是两个常见的cp命令使用误区导致的,咱们一步步拆解:

你的命令哪里错了?

  1. 源和目标路径搞反了
    你想要把FolderB的内容复制到FolderA,但你的命令里把FolderA作为源、FolderB作为目标——这完全搞反了复制方向(从你描述的结果来看,可能是实际输入时写反了顺序)。核心原则是:源是你要复制的内容所在的目录,目标是你要复制到的目录

  2. 源目录没有加末尾斜杠
    这是最关键的点:当cp的源是目录时,如果不带末尾的/,它会把整个源目录(比如FolderB)作为一个整体复制到目标目录里;而加上/后,它会复制源目录内部的所有内容,而不是目录本身。

正确的命令应该怎么写?

要实现你的需求——把FolderB的内容递归复制到FolderA,跳过已存在的文件,正确命令是:

cp -R -n /directory/to/FolderB/ /directory/to/FolderA

各参数的作用:

  • -R:递归处理所有子目录和文件,确保不会漏掉嵌套内容
  • -n:全称--no-clobber,意思是不覆盖已存在的文件,正好符合你“仅新增不存在的内容”的需求
  • FolderB/:末尾的斜杠是核心,它告诉cp:“我要复制FolderB里面的所有东西,不是FolderB这个目录”
  • 目标路径FolderA:因为FolderA已经存在,cp会自动把FolderB里的内容(包括File4、Folder3里的新增文件等)合并到FolderA中,已存在的File1、File2、Folder3会被跳过,不会被覆盖或重复创建。

验证效果

执行完这个命令后,FolderA的结构会变成:

  • File1(原有的)
  • File2(原有的)
  • Folder3(原有的,且会新增FolderB里Folder3中原本没有的文件)
  • File4(新增的)

完全符合你的预期,不会出现嵌套的FolderB目录。

内容的提问来源于stack exchange,提问作者user74843

火山引擎 最新活动