Em shells que suportam Substituto de processo (visto em Q317819 ), diff
pode receber a saída de qualquer comando que gere uma representação de texto - por exemplo, exiftool
:
diff -u <(exiftool -a -v one.pdf) <(exiftool -a -v two.pdf)
A sugestão de strings
de Stefan também gera uma representação de texto e pode ser usada da mesma maneira :
diff -u <(strings one.pdf) <(strings two.pdf)
A saída de exiftool
ou strings
é relativamente legível, mas não representa o arquivo inteiro. exiftool
mostra apenas metadados e strings
mostra apenas trechos com 4 ou mais bytes de texto ASCII válido; diferenças que não são reconhecidas como metadados ou como strings ASCII não serão encontradas. Uma representação de texto ilegível, mas completa, pode ser feita com od
:
diff -u <(od -vcw one.pdf) <(od -vcw two.pdf)
(Se od
não estiver disponível, uma representação de texto ainda menos legível, mas ainda completa, poderá ser feita com hexdump
ou hexcat
; em MacPorts , a implementação GNU de od
my será instalada como god
. Nem todas as implementações suportam as mesmas opções.
O aparente melhor método disponível para ver todas as diferenças e ver o significado de tantas diferenças quanto possível é usar cada uma delas nos mesmos dois arquivos.
Eu acredito que todo sistema operacional de desktop moderno que não seja o Windows possui um shell que suporta a Substituição de Processos instalada por padrão; vários desses shells estão disponíveis para o Windows, mas você terá que passar por alguns obstáculos para que eles funcionem.