Linux jämföra 2 filer binära alternativ


Jag tror att du kan gå med 3 verktyg: cmp är bättre för binära filer och diff är bättre för textfiler För binära filer diff rapporterar bara om de inte skiljer sig från det. diff fungerar också för kataloger. Någon av de två första kan uppnå det du behöver tyst. diff använder - q-omkopplaren och cmp använder - s-omkopplaren för att bara berätta en returkod: 0 om de två filerna matchar 1 om inte. cmp har också ett bra alternativ att undvika (typ av) läsa hela filen (bra om du har stora filer): om du vet att filerna kan skilja sig åt i de första N-linjerna eller mellan linje N och M du kan göra (dvs. rad N 10 och M 20): Jag har lagt till md5sum i listan eftersom om du har möjlighet att beräkna MD5-kontrollsumman varje gång du redigerar en av dessa filer kan du bara jämföra det för att snabbt hitta om de matchar eller inte. I det här fallet antar jag att du har en massa filer att jämföra. svarat 25 okt 10 kl 9:23 En av de vanligaste sätten att bestämma om två filer är identiska (förutsatt att deras storlekar matchar) använder ett program för att skapa en hash (i huvudsak ett fingeravtryck) av en fil. De vanligaste är md5sum och sha1sum. Om du har många filer som du behöver kontrollera, till exempel om du överför en katalog full av filer från ett system till ett annat, kan du omdirigera utmatningen från det ursprungliga systemet till en fil, så kan md5sum sha1sum automatiskt använda den filen till berätta vilka filer som är annorlunda: svarade 29 apr 10 kl 12:21 MD5 är inte alltid tillförlitlig för detta: diggsecurityhellip ndash Jon Cage 29 apr 10 kl 12:30 MD5 är faktiskt pålitlig för grundläggande integritetskontroller. Det anses inte som kryptografiskt starkt som vi en gång trodde. Om du är orolig för hackare, använd inte MD5, men om du bara vill veta om vissa filer som kopierats från en CD har skadats eller om din kompilator spetsar ut identiska filer varje gång, är MD5 mer än tillräcklig. ndash Adam Batkin 29 apr 10 kl 12:55 Jag föredrar VBinDiff. DHEX använder CPU även vid tomgång, jag tror att det är omöjligt att återvinna hela tiden eller något. VBinDiff fungerar dock inte med breda terminaler. Men adresserna blir konstiga med breda terminaler, eftersom du har mer än 16 byte per rad. ndash Janus Troelsen 17 okt 12 kl 14:22 Prova diff i följande kombination av zshbash-processutbyte och kolordiff i CLI: - y visar skillnader sida vid sida (valfritt) xxd är CLI-verktyg för att skapa en hexdumputmatning av binären file colordiff kommer att färga diff-utdata (installera via: sudo apt-get install colordiff) lägga till - W200 för diff för bredare utdata om filerna är stora, lägg till gräns (t. ex. - l1000) för varje xxd-metod som fungerar för byte-tilläggsavsändning Utgång för en enda NUL byte-borttagning vid den 100: e byte av en stor fil: Om du också vill se ASCII-versionen av tecknet: Testad på Ubuntu 14.04. Jag föredrar OD över xxd eftersom: det är POSIX. xxd är inte (kommer med Vim) har - An att ta bort adresskolumnen utan awk. - En tar bort adresskolumnen. Detta är viktigt, annars skulle alla linjer skilja sig efter borttagning av byte. - w1 sätter en byte per rad, så att diff kan konsumera den. Det är avgörande att ha en byte per rad, annars varje rad efter att en radering skulle bli out of phase och skilja sig. Tyvärr är detta inte POSIX, men finns i GNU. - tx1 är den representation du vill ändra till ett eventuellt värde, så länge du behåller 1 byte per rad. - v förhindrar förkortning av asteriskrepetition som kan störa diff-pastan - d - - sammanfogar varannan linje. Vi behöver det eftersom hexen och ASCII går in i separata angränsande linjer. Hämtad från: stackoverflowquestions8987257concatenating-every-other-line-with-the-next Vi använder parentes () för att definiera bdiff istället för att begränsa omfånget för den inre funktionen f. se även: stackoverflowquestions8426077how-to-define-a-function-inside-another-function-in-bash svarade apr 4 15 at 20:31 När du använder hexdump och text diff för att jämföra binära filer, speciellt xxd. Tillägg och borttagning av byte blir skift i adressering vilket kan göra det svårt att se. Den här metoden berättar att xxd inte matar ut adresser och att endast utmatar en byte per rad, vilket i sin tur visar exakt vilka byte som har ändrats, lagts till eller tagits bort. Du kan hitta adresserna senare genom att söka efter de intressanta sekvenserna av byte i en mer normal hexdump (utdata från xxd first. bin). svarat den 22 april kl 15:10

Comments

Popular Posts