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 gå ur fas 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 22 april 15 kl 12: 10Ed B, Beverly Hills, Kalifornien 5 UNIX diff-kommandon Exempel på hur man jämför två textfiler UNIX diff-kommandot jämför innehållet i två textfiler och matar ut en lista över skillnader. Om så önskas kan du instruera det att ignorera avstånd eller fallvariationer. Detta kommando kan också verifiera att två filer innehåller samma data. Syntaxen är relativt enkel: diff options file1 file2 När det här UNIX-dokumentet jämförs, listas alla linjer som inte matchar. En större än eller mindre än symbol visas i början av varje rad. Det betyder att texten visas i file1, och gt indikerar att den kommer från file2. Detta UNIX diff-kommando exempel visar hur det fungerar utan några alternativ: diff file1 file2 1,5c1,5 lt det här är rad 1 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Det här är linje 2 Denna rad visar hur diff-kommandot hanterar vitt utrymme, det här är linje 3 om (ab) lt är det här linjen 4 DIFF-KOMMANDOEN ÄR HJÄLPMÄRKT OM SAMMANSÄTTNING AV KÄLLKODEFILER Det här är linje 5 --- gt det här är linje 1 gt Detta är linje 2 Denna rad visar hur diff-kommandot hanterar white space gt det här är rad 3 om (ab) gt det här är rad 4 diff-kommandot är användbart när man jämför källkodsfiler gt det här är rad 5 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Innan du listar textlinjer visar det här verktyget hur du eliminerar alla skillnader. Den levererar kommandon Ed line editor, till exempel 1,5c1,5. Det innebär att du kan göra filerna matcha genom att ändra linjerna en till fem. Brevet c står för förändring. Diffs riktningar kan också innehålla en för append eller d för radering. Du måste till exempel ändra linjerna två till fyra om kommandot matas ut 2,4c2,4. Filförskjutningsverktyget använder ett nummer utan kommatecken om en enda rad påverkas. Du kan konvertera fil1 till fil2 genom att följa anvisningarna som de visas. För att göra filen2 matcha filen1, följ dem omvänd och byt d för a. När du jämför två textfiler, är det möjligt att diff inte hittar några skillnader. Utmatningen är helt tom om detta händer. Diff uppträder också annorlunda när du anger katalognamn. Det kommer att jämföra file2 med ett objekt i katalogen1 som har samma namn. Om du anger två katalognamn kontrollerar den filer i båda katalogerna som har matchande namn. Även om folk brukar använda diff för att jämföra textfiler, kan du också kolla ett dokument mot standardinmatning. Du kan prova detta genom att ersätta file1 eller file2 med en bindestreck (-). Diff kommer att använda ord du skriver på tangentbordet för att utföra jämförelsen. Den här funktionen kan vara till hjälp om du behöver jämföra skriftlig text med en fil. Vidare kan diff använda stdin för att ta emot utgångsdata som du rör in från ett annat UNIX-kommando. Det kommer också att acceptera två bindestreck, men det finns liten anledning att jämföra stdin till sig själv. Detta kommando har en mängd användbara alternativ. Om du använder - b-inställningen, hoppar den över mindre skillnader i mellanslag. Detta UNIX diff exempel visar att - b instruerar systemet att ignorera extra mellanslag och flikar: diff - b file1 file2 1c1 lt är line 1 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. --- gt det här är linje 1 3,5c3,5 lt detta är linje 3 om (ab) lt det här är rad 4 DIFF-KOMMANDOEN ÄR HELPFINLIGT OM SAMMANSÄTTNING KILDE CODE FILER lt detta är linje 5 --- gt det här är linje 3 om (ab) gt detta är rad 4 diff-kommandot är användbart när man jämför källkodsfiler gt det här är rad 5 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Alternativet - b visar sig användbart om du vill jämföra formaterade och oformaterade filer. Alternativt kan du ignorera alla distansvariationer med inställningen starkare - w: diff - w file1 file2 1c1 lt är line 1 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. --- gt det här är linje 1 4,5c4,5 lt det här är rad 4 DIFF-KOMMANDOEN ÄR HJÄLPFUNLIGT OM SAMMANSÄTTNING KILDE KODFILER lt det här är linje 5 --- gt det här är rad 4 diff-kommandot är användbart när man jämför källkod Filer gt det här är rad 5 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. För att bortse från fallskillnader, lägg till alternativet - i. Du kan använda den för att kontrollera om misstag har omvandlats till en stor bokstav till blandade bokstäver. Det fungerar på samma sätt som med UNIX grep-kommandot: diff - i file1 file2 1,3c1,3 lt detta är linje 1 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Det här är linje 2 Denna rad visar hur diff kommandot hanterar vitt utrymme lt det här är rad 3 om (ab) --- gt det här är linje 1 gt det här är linje 2 Denna rad visar hur diff kommandot hanterar vitt utrymme gt det här är linje 3 om (ab) 5c5 lt detta är linje 5 --- gt det här är linje 5 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Innan du fortsätter läsa. Har den här artikeln varit till nytta för dig? Skulle det gynna andra Om du svarade ja på någon fråga, vänligen dela sidan. MER LÄSARE MER FRAMTIDA ARTIKLAR Tack för att du delar. Alternativet - c är praktiskt för att jämföra två programkodsändringar. Det avslöjar sammanhanget med varje skillnad genom att notera sex angränsande linjer och sätta utropstecken före linjen som skiljer sig från varandra. Ett plus - eller minustecken visas när texten har lagts till eller tagits bort från filen2. Dessutom listas det tider och datum då båda filerna uppdaterades: diff - c file1 file2 file1 Thu Jan 23 13:36:42 2014 --- file2 Thu Jan 23 13:37:13 2014 1,5. Detta är rad 1 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. . Detta är linje 2 Denna rad visar hur diff-kommandot hanterar vitt utrymme. detta är rad 3 om (a b). Detta är rad 4 DIFF COMMANDEN ÄR HJÄLPFULLT OM SAMMANSÄTTNING AV KÄLLKODEFILER. detta är linje 5 --- 1,5 ----. detta är linje 1. Detta är linje 2 Denna rad visar hur diff-kommandot hanterar vitt utrymme. detta är rad 3 om (ab). detta är rad 4 diff-kommandot är användbart när man jämför källkodsfiler. Detta är rad 5 UNIX diff-kommandot används för att jämföra (hitta skillnaderna) mellan två filer. Du kan kombinera flera alternativ och använda en enda bindestreck. Exempelvis ignorerar - iw vita utrymme och fallskillnader. Rikliga alternativ har hjälpt till att skapa diff som ett flexibelt UNIX-jämföringsverktyg som förenklar programmering, redigering och datahanteringsuppgifter. Vill du lära dig mer UNIX - eller Linux-kommandon, eller hur man läser och skriver skalskript Om du är redo att flytta förbi grunderna är något av dessa online-kurser ett bra ställe att börja. UNIX och Linux Operativsystem Fundamentals innehåller en mycket bra introduktion till UNIX Shell Scripting-modulen och bör tas om du är ny i UNIX och Linux operativsystemmiljöer eller behöver en uppdatering på nyckelkoncept. UNIX Shell Scripting är ett bra alternativ om du redan är bekväm med UNIX eller Linux och behöver bara skärpa din kunskap om skalskription och UNIX-skalet i allmänhet. Båda kurser inkluderar tillgång till ett Internet Lab-system för att slutföra kursen hands-on övningar, som används för att omdriva de nyckelbegrepp som presenteras i kursen. Alla frågor du kan ha när du tar kursen besvaras av en erfaren UNIX-tekniker.
Comments
Post a Comment