Note que isso não suporta nomes de arquivo com determinados caracteres especiais, nesse caso você pode querer usar delimitadores zero que AFAIK diff não está suportando a partir de agora. Mas há comm que é apoiá-lo desde git. savannah. gnu. org/cgit/coreutils. git/commit/hellip assim, uma vez que se trata de um coreutils perto de você, você pode fazer comm - z lt (cd folder1 ampamp find - print0 Sort) lt (cd folder2 ampamp find - print0 sort - z) (cuja saída você pode ter que converter mais no formato que você precisa usando o parâmetro --output-delimiter e ferramentas adicionais). Ndash phk Mar 5 at 21:52 Através de você não está usando bash, você pode fazê-lo usando diff com --brief e --recursive: O homem diff inclui ambas as opções: - q. --brief relatório apenas quando os arquivos diferem - r. --recursive recursivamente comparar quaisquer subdiretórios encontradosTheres muitas soluções para criar um patch de nível de arquivo para arquivos de texto e similares. O que eu estou procurando é um comando de script / shell fácil que irá comparar oldversion / newversion / e dar-me uma árvore de arquivos que eu preciso copiar sobre oldversion para torná-lo igual a newversion (assumindo que os arquivos não são removidos na versão atualizada) . Observe que as duas pastas contêm arquivos binários e de texto. Anteriormente, estávamos usando o hack: fdupes - qrf newversion / oldversion / grep newversion xargs rm Deixando-nos com a pasta newversion que poderia ser empacotada como um patch. Infelizmente, isso acabou sendo desastroso porque fdupes não considera nomes de arquivos. Whatd ser grande é algo como fdupes que realmente fez incluir o nome do arquivo na comparação. Para comparar dois arquivos, usamos o comando diff. Como comparamos 2 diretórios Especificamente, queremos saber quais arquivos / subdiretórios são comuns, quais são apenas no diretório 1, mas não no outro. Unix old-timers pode se lembrar do comando dircmp. Infelizmente, esse comando não está disponível no Linux. No Linux, usamos o mesmo comando diff para comparar diretórios, bem como arquivos. Sem qualquer opção, difere 2 diretórios lhe dirá quais arquivos existem somente em 1 diretório e não o outro, e que são arquivos comuns. Arquivos que são comuns em ambos os diretórios (por exemplo, bashrc na lista acima) são difundidos para ver se e como o conteúdo do arquivo diferem. Se você NÃO está interessado em diferenças de arquivos, basta adicionar a opção - q (ou --brief). Diff ordena sua saída alfabeticamente pelo nome do arquivo / subdiretório. Eu prefiro agrupá-los se eles são comuns, e se eles só existem no primeiro ou segundo diretório. É por isso que eu canalizei a saída de diff através de sort no comando acima. Observe que, por padrão, diff não atinge os subdiretórios para comparar os arquivos e subdiretórios nesse nível. Para alterar seu comportamento para ir recursivamente subdiretórios, adicione - r.
Comments
Post a Comment