Usando “mv” ou “ditto” para mesclar pastas no OS X

5

Acostumado com a maneira de fazer o Windows, acabei de descobrir que o OS X não tem função de mesclagem - mover significa substituir a pasta. Enquanto isso faz sentido, sinto falta da fusão!

Eu tenho dois diretórios Wordpress, 1 contém a fonte padrão e 2 contém a versão trabalhada com o tema personalizado plugins etc.

Eu quero ver a diferença entre os dois, então estou colocando no SVN. A pasta 1 já está pronta, agora, em teoria, eu deveria simplesmente mesclar o conteúdo de 2 com 1, substituindo tudo pelo conteúdo de 2, mas deixando os arquivos SVN ocultos intactos.

Infelizmente o OS X, ao se mover, substitui a pasta para que meu cliente SVN enlouqueça e não entenda mais a estrutura de pastas.

Então, acredito que minhas opções são mv e ditto , mas qual delas você usaria na minha situação e como?

sudo mv wordpress /Documents/svn/wwwholiday/trunk/wordpress

Eu quero que mv sobrescreva tudo o que encontrar, mas deixe sozinho o que já estiver dentro da pasta 1 e não tenha duplicado na pasta 2.

    
por slhck 06.06.2012 / 20:02

2 respostas

11

A maneira mais fácil de mesclar pastas de uma maneira, por exemplo

Merge everything from folder 1 → folder 2

seria usar rsync .

rsync -avh folder1/* folder2/

Isto irá:

  • move todos os arquivos que existem apenas na pasta 1 e seus subdiretórios para a pasta 2
  • não sobrescrever qualquer coisa na pasta 2 se já estiver lá
  • sobrescreve arquivos que foram alterados, a menos que adicione a opção --ignore-existing
  • não exclua nada da pasta 2, a menos que adicione a opção --delete

Sinta-se à vontade para adaptar isso à sua situação (onde folder1 e folder2 são o contrário, eu acho).

Você pode tentar ver o que o comando faz chamando:

rsync -avh --dry-run folder1/ folder2/

A opção dry-run mostra o que ela faz.

Não se esqueça de que as barras invertidas têm um significado especial, por isso folder2/ , pois o destino não é igual a folder2 . Verifique a página de manual de rsync para uso e mais opções.

Também é recomendado -P (de acordo com --help , same as --partial --progress ), que adiciona show progress during transfer e keep partially transferred files (o que é útil para novas tentativas se houver uma falha).

    
por 06.06.2012 / 20:12
0

Você pode fazer isso como @slhck diz ou você também pode usar apenas cp .

$sudo cp -R wordpress/ /Documents/svn/wwwholiday/trunk/wordpress
    
por 06.06.2012 / 20:16

Tags