Como posso mover um diretório para um diretório existente?

5

Eu preciso essencialmente mesclar as alterações em duas árvores, aplicando as alterações do ramo 2 para o ramo 1. Eu tenho árvores assim:

media
├── cd
│   ├── 0
│   │   ├── file1
│   │   ├── file2
│   │   └── file3
│   ├── 1
│   │   ├── file1
│   │   ├── file2
│   │   └── file3
│   └── 2
│       ├── file1
│       ├── file2
│       └── file3
├── dvd
│   ├── 0
│   │   ├── file1
│   │   ├── file2
│   │   └── file3
│   ├── 1
│   │   ├── file1
│   │   ├── file2
│   │   └── file3
│   └── 2
│       ├── file1
│       ├── file2
│       └── file3
└── stuff
    ├── 0
    │   ├── file1
    │   ├── file2
    │   └── file3
    ├── 1
    │   ├── file1
    │   ├── file2
    │   └── file3
    └── 2
        ├── file1
        ├── file2
        └── file3

Eu mudei os arquivos em minha ramificação 2 e preciso aplicá-los na ramificação 1. Se eu tentar movê-los pela ramificação 1, recebo os seguintes erros:

mv: cannot move '/branch2/media/cd' to '/branch1/media/cd': Directory not empty.

Existe outro comando que eu deveria estar usando para isso? mv -f não parece fazer o truque.

    
por Naftuli Kay 20.10.2011 / 00:40

2 respostas

7

Por que não usar rsync ?

rsync -a /branch2/media/ /branch1/media/

O motivo pelo qual mv não pode mover /branch2/media/cd/ para /branch1/media é porque /branch1/media já tem cd/ . mv se recusa a atrapalhar diretórios não vazios.

    
por 20.10.2011 / 00:58
3

Você geralmente preferiria usar rsync ou qualquer outra ferramenta de versão.

Se você ainda quiser hackear, pode começar removendo os arquivos existentes em / branch1 / media / com find

find /branch1/media -type d -exec rm -rf {} \+

Você prossegue para a sua jogada

for i in $(find /branch2/media -type d); do
    mv /branch2/media/$dir /branch1/media
done

Você provavelmente deve ajustar esses comandos um pouco de acordo com o seu ambiente, mas não há motivo para não funcionar.

PS tenha cuidado com a chamada find -exec rm -rf . Normalmente, começo verificando meu comando de localização com ls antes de usar rm

    
por 20.10.2011 / 01:41