Como posso comparar e mesclar automaticamente um grande número de arquivos de texto?

0

Devido a uma série de problemas técnicos com a sincronização do Dropbox e do Simplenote, minha principal pasta de escrita, que contém arquivos de texto principalmente no formato Markdown, está toda desarrumada.

Eu tenho cerca de 500 arquivos exclusivos, mas agora cada um deles tem várias versões. Para qualquer arquivo, o diretório contém algo assim:

textfile.txt
textfile.md
textfile.org
textfile.0001.txt
textfile.0002.txt

Eles geralmente têm conteúdo idêntico - alguns contêm quebras de linha extras no início ou uma linha contendo o nome do arquivo.

Eu não percebi imediatamente que isso tinha acontecido e que eu tinha várias versões, no entanto, para alguns deles, modifiquei uma das versões e não outras. (A boa notícia é que quando modifico arquivos, não edito ou excluo, apenas adiciono um novo texto.)

Eu quero reconciliar minha pasta para que eu tenha uma versão canônica para cada arquivo.

Como agora existem milhares de arquivos e mais de duas versões de cada um, prefiro não usar um aplicativo de comparação manual para reconciliá-los.

Existe uma ferramenta que irá encontrar vários arquivos de texto contendo o mesmo conteúdo e mesclá-los automaticamente? Mais uma vez, os arquivos contêm conteúdo duplicado, com algum conteúdo novo, então simplesmente mesclar o conteúdo duplicado e, em seguida, adicionar o novo conteúdo no final do arquivo seria satisfatório.

(Estou usando o OSX 10.8.2 e escrevo principalmente no Aquamacs Emacs. Ah, e vou parar de usar o Simplenote.)

    
por incandescentman 08.02.2013 / 20:41

1 resposta

2

Como o Mac é baseado em Unix, acredito que ele suporta os comandos sdiff e cat em seus terminais. Eu só queria postar um comentário aqui, mas desde que eu não tenho o suficiente, estou respondendo como uma resposta. Então eu acho que devemos tentar fazer algo como:

Pseudocode:
 loop a
     loop b
     if (sdiff fileA FileB*)==0 then cat fileA fileB*
     end loop b
 end loop a

Onde estamos apenas dando um loop sobre todos os arquivos possíveis que existem no diretório. Eu acho que outros usuários podem nos dizer se isso é possível ou não!

    
por 08.02.2013 / 21:38