Объединить одну папку в другую, но сохранить разные (несуществующие) файлы
Предположим, у меня есть следующая структура:
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