将一个文件夹合并到另一个文件夹但保留不同的(不存在的)文件

将一个文件夹合并到另一个文件夹但保留不同的(不存在的)文件

假设我有以下结构:

Folder-A
    File-1
    File-2
    File-4
    Folder-A-1
        File-5
        File-6
    Folder-A-2
        File-7

Folder-B
    File-1
    File-2
    File-3
    Folder-A-1
        File-5

我想复制Folder-A到/之上Folder-B,以便从逻辑上讲,结果如下:

Folder-B
    File-1 *
    File-2 *
    File-3
    File-4 +
    Folder-A-1
        File-5 *
        File-6 +
    Folder-A-2 +
        File-7 +

其中*是覆盖,+是添加。

换句话说,递归地,如果文件(或文件夹)存在于同一路径中,则覆盖它,如果它是新的,则添加它。

我该如何做呢?

答案1

这是的默认行为cp。因此,您需要做的就是进行常规递归cp

cp -r Folder-A/* Folder-B/

展示:

$ tree
.
├── Folder-A
│   ├── File-1
│   ├── File-2
│   ├── File-4
│   ├── Folder-A-1
│   │   ├── File-5
│   │   └── File-6
│   └── Folder-A-2
│       └── File-7
└── Folder-B
    ├── File-1
    ├── File-2
    ├── File-3
    └── Folder-A-1
        └── File-5

$ cp -r Folder-A/* Folder-B
$ tree
.
├── Folder-A
│   ├── File-1
│   ├── File-2
│   ├── File-4
│   ├── Folder-A-1
│   │   ├── File-5
│   │   └── File-6
│   └── Folder-A-2
│       └── File-7
└── Folder-B
    ├── File-1
    ├── File-2
    ├── File-3
    ├── File-4
    ├── Folder-A-1
    │   ├── File-5
    │   └── File-6
    └── Folder-A-2
        └── File-7

相关内容