1.7 Arquivos binários e forçando comparações de texto Se diff acha que um dos dois arquivos que ele está comparando é binário (um arquivo não-texto), normalmente trata esse par de arquivos muito como se o formato de saída de resumo tivesse sido selecionado (veja Brief) , E relata apenas que os arquivos binários são diferentes. Isso ocorre porque as comparações linha a linha geralmente não são significativas para arquivos binários. Isso não conta como problema, mesmo que a saída resultante não captura todas as diferenças. Diff determina se um arquivo é texto ou binário verificando os primeiros poucos bytes no arquivo o número exato de bytes é dependente do sistema, mas normalmente é vários mil. Se cada byte nessa parte do arquivo não for nulo, diff considera o arquivo como texto, caso contrário considera o arquivo como binário. Às vezes, você pode querer forçar o diff a considerar arquivos como sendo texto. Por exemplo, você pode estar comparando arquivos de texto que contêm caracteres nulos diff seria erroneamente decidir que esses são arquivos não-texto. Ou você pode estar comparando documentos que estão em um formato usado por um sistema de processamento de texto que usa caracteres nulos para indicar formatação especial. Você pode forçar diff a considerar todos os arquivos como arquivos de texto e compará-los linha a linha, usando a opção --text (-a). Se os arquivos que você compara usando esta opção não contiverem texto, eles provavelmente conterão poucos caracteres de nova linha ea saída diff consistirá de pedaços mostrando diferenças entre as longas linhas de quaisquer caracteres que os arquivos contenham. Você também pode forçar diff a relatar apenas se os arquivos são diferentes (mas não como). Use a opção --brief (-q) para isso. Em sistemas operacionais que distinguem entre texto e arquivos binários, diff normalmente lê e grava todos os dados como texto. Use a opção --binary para forçar diff a ler e gravar dados binários em vez disso. Esta opção não tem efeito em um sistema compatível com POSIX como o GNU ou Unix tradicional. No entanto, muitos sistemas operacionais de computadores pessoais representam o fim de uma linha com um retorno de carro seguido de uma nova linha. Em tais sistemas, diff normalmente ignora esses retornos de carro na entrada e os gera no final de cada linha de saída, mas com a opção bin binária diff trata cada retorno de carro como apenas outro caractere de entrada e não gera um retorno de carro no Final de cada linha de saída. Isso pode ser útil ao lidar com arquivos não-texto que devem ser intercambiados com sistemas compatíveis com POSIX. O --strip-trailing-cr faz com que diff trate linhas de entrada que terminam em retorno de carro seguido de nova linha como se terminassem em linha simples. Isso pode ser útil ao comparar o texto que é imperfeitamente importado de muitos sistemas operacionais de computadores pessoais. Esta opção afeta a forma como as linhas são lidas, o que, por sua vez, afeta como elas são comparadas e produzidas. Se você quiser comparar dois arquivos byte por byte, você pode usar o programa cmp com a opção --verbose (-l) para mostrar os valores de cada byte diferente nos dois arquivos. Com GNU cmp. Você também pode usar a opção - b ou - print-bytes para mostrar a representação ASCII desses bytes. Consulte Invocar cmp. Para maiores informações. Se diff3 pensa que qualquer um dos arquivos que está comparando é binário (um arquivo não-texto), ele normalmente relata um erro, porque essas comparações geralmente não são úteis. Diff3 usa o mesmo teste como diff para decidir se um arquivo é binário. Como com diff. Se os arquivos de entrada contiverem alguns bytes sem texto, mas de outra forma são como arquivos de texto, você pode forçar o diff3 a considerar todos os arquivos como arquivos de texto e compará-los linha a linha usando a opção - a ou --text. Para cmp especificamente diz que faz um byte por comparação de bytes para que seja o meu padrão para 2 arquivos binários. Diff é linha a linha e lhe dará a mesma resposta YesNo, mas é claro que não o mesmo despejo para o padrão out stream. Se as linhas são longas porque talvez eles não são arquivos de texto, então eu prefiro cmp. Diff tem a vantagem de que você pode especificar uma comparação de diretórios eo - r para recursão comparando assim vários arquivos em um comando. Ndash H2ONaCl Dec 24 16 at 8:07 O diff padrão unix irá mostrar se os arquivos são os mesmos ou não: respondido Aug 25 12 em 1:17 Se eu não obter nenhuma saída de diff significa que os arquivos são o mesmo ndash becko maio 7 15 às 14:45 that39s correto - nenhuma saída significa que eles são idênticos ndash JWDN Aug 3 15 at 13:37 diff parece ter problemas com arquivos realmente grandes. Eu tenho um diff: memória esgotada quando comparando dois arquivos 13G. Ndash Yongwei Wu Sep 28 16 às 8:45 Saída interessante. Está dizendo que eles são quotbinaryquot fies. Uma vez que todos os arquivos podem ser considerados binários, isso é uma estranha afirmação. Ndash H2ONaCl Dec 24 16 at 8:13 Você pode explicar seus votos para baixo por favor SHA1 tem 4 upvotes, e se o OP pensa there39s uma chance os dois arquivos poderiam ser o mesmo ou similar, as chances de uma colisão são leves e não digno de Down votando MD5 mas subindo voto SHA1 diferente porque você ouviu você deve hash suas senhas com SHA1 em vez de MD5 (that39s um problema diferente). Ndash Rikki Jan 16 16 em 1:10 Não tenho certeza sobre o motivo, mas um cmp puro será mais eficiente do que a computação qualquer função de hash de arquivos e compará-los (pelo menos para apenas 2 arquivos) ndash orian Apr 26 16 at 13: 58How to Comparar arquivos binários Tutorial Descrição: Este tutorial descreve como comparar arquivos binários e discute várias opções de comparação de arquivos binários. Abra ExamDiff Pro e selecione a opção Arquivos na caixa de diálogo Comparar. Em seguida, selecione dois arquivos binários para comparar, como duas DLLs. Por padrão, o ExamDiff Pro determina automaticamente se os arquivos são de texto ou binários. O programa pode reconhecer automaticamente arquivos de texto codificados em formatos ASCII (ANSI), UTF-8 e UTF-16 (ambos pequenos e grandes endian) (os arquivos UTF-16 são detectados por marcas de ordem de byte - 0xFFFE para little endian e 0xFEFF para Grande endian). Se nenhuma dessas quatro codificações forem detectadas, o ExamDiff Pro tratará os arquivos como arquivos binários. Como alternativa, você pode selecionar Tratar arquivos de texto como binários em Opções de comparação. Clique em Comparar. Você receberá uma mensagem semelhante a esta: Agora clique em Mostrar Detalhes. Vamos experimentar algumas opções de comparação binária. Pressione Ctrl-J ou clique no botão Opções da barra de ferramentas para abrir a caixa de diálogo Opções e navegue até a página Comparação de dir. A primeira opção que examinaremos é o tamanho do bloco de comparação. Por padrão, isso é definido como 1 byte, que fornece a comparação binária mais precisa. No entanto, para a comparação de arquivos grandes pode demorar tanto tempo que faz sentido sacrificar alguma precisão para melhor desempenho. Vamos alterá-lo para 2 bytes: Você pode ver que temos um relatório de comparação menos detalhado (por exemplo, o número de diferenças é agora 910 versus 1526 quando usamos blocos de 1 byte), mas este resultado foi alcançado mais rápido que o primeiro. As opções seguintes, Número de bytes por linha. Formato de byte. Conjunto de caracteres . E um editor binário externo são auto-explicativos e bem documentados na ajuda on-line. Mais uma coisa: se, depois de comparar dois arquivos de texto, você quiser ver os resultados de sua comparação binária, você pode usar o comando de menu Files Toggle TextBinary Comparison , Ou o botão Toggle TextBinary Comparison barra de ferramentas. (Se você não pode encontrar o botão Toggle TextBinary Comparison barra de ferramentas na sua barra de ferramentas ExamDiff Pro, você pode ter que personalizar sua barra de ferramentas, como demonstrado no Tutorial Básico 2. Etapa 6.) Cópia de direitos autorais 1997-2017 PrestoSoft LLC. Todos os direitos reservados.
No comments:
Post a Comment