Объединить одну папку в другую, но сохранить разные (несуществующие) файлы

Предположим, у меня есть следующая структура:

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
Другие вопросы по тегам