Mesclar uma pasta em outra, mas manter arquivos diff (não existentes)

1

Suponha que eu tenha a seguinte estrutura:

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

Eu quero copiar Folder-A para / em cima de Folder-B para que, logicamente, o resultado seja este:

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

Em que * é uma substituição e + é uma adição.

Em outras palavras, recursivamente, se o arquivo (ou pasta) existir no mesmo caminho, sobrescreva-o e, se for novo, adicione-o.

Como eu faria isso?

    
por Oliver Williams 28.04.2018 / 18:24

1 resposta

1

Esse é o comportamento padrão de cp . Então, tudo que você precisa fazer é uma recursiva regular cp :

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

Para demonstrar:

$ 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
    
por terdon 29.04.2018 / 01:37