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

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

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
задан 28 April 2018 в 19:24

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
1
ответ дан 7 December 2019 в 15:20

Другие вопросы по тегам:

Похожие вопросы: