“Um lado” diff

2

Eu tenho duas grandes árvores de diretórios - pense em anos de trabalho do cliente para uma agência. Um é velho e desatualizado; o outro é maior e está em uso atual. Gostaria de excluir o primeiro, mas quero ter certeza de que o último é realmente um superconjunto dele (suspeito que o primeiro seja um arquivo antigo ou uma edição anterior do último, que foi descuidadamente copiada e nunca excluída).

Usar diff em sua configuração usual produziria muita saída waaaaay, porque me informaria sobre todas as diferenças entre as duas árvores de diretórios. O que eu gostaria de saber é qual comando eu poderia executar para descobrir quais arquivos (se houver) estão na árvore menor e mais antiga, que também não estão disponíveis na árvore maior e mais recente.

Aliás, estou executando o cygwin no Windows - não tenho certeza se isso é importante. Se alguém sugerir o uso de um utilitário do Windows, tudo bem também.

    
por justinbach 08.01.2010 / 15:30

3 respostas

1
O

Além da comparação é, literalmente, incomparável para esse tipo de tarefa. Faz comparando diretórios trivial. Ele mostrará os arquivos em uma visualização na qual você poderá selecioná-los e copiá-los em outro lugar ou na nova árvore.

Se o seu conjunto de dados é como você suspeita, ele simplesmente mostrará uma exibição vazia no lado antigo e você sabe que não há nada que precise fazer.

    
por 08.01.2010 / 15:39
0

Robocopy é o que você deseja para um utilitário do Windows.

robocopy.exe <your old dir tree> <your new dir tree> /COPYALL /L

Você pode adicionar outras opções, mas certifique-se de que o / L está lá, ou ele realmente mesclará as duas árvores em vez de apenas comparar as diferenças.

    
por 08.01.2010 / 15:38
0
olddir$ for file in $(find -type f); do [ -e $NEWDIR/$file ] || echo "$file is missing in NEWDIR"; done
    
por 08.01.2010 / 16:43