Come confrontare due testi e directory per vedere le differenze in Linux

Ultimo aggiornamento: 12/12/2025
Autore: Isaac
  • En Linux Possiamo confrontare file e directory con strumenti della console come diff, sdiff, cmp, comm o vimdiff e con interfacce grafiche come Meld o Diffuse.
  • Il comando diff consente di visualizzare le differenze riga per riga, ignorare spazi, lettere maiuscole o righe vuote e confrontare ricorsivamente intere directory con opzioni quali -r, -qo o -y.
  • Strumenti grafici come Meld semplificano il confronto e l'unione di file e cartelle tramite colori e frecce e si integrano persino con i sistemi di controllo delle versioni.

Strumenti per confrontare testi in Linux

Quando lavori quotidianamente con Linux e file di testoPrima o poi, ti troverai a dover verificare se due file o directory sono esattamente uguali. Questo potrebbe accadere dopo una migrazione di dati, durante l'aggiornamento di un'applicazione, durante la revisione di backup o semplicemente quando si confrontano due versioni dello stesso documento. copione il documento.

Questi tipi di compiti, che a prima vista possono sembrare noiosi se eseguiti "a occhio", diventano molto semplici se se ne padroneggiano alcuni. strumenti di confronto di file e directoryIn Linux, le opzioni vanno da comandi classici come diff, sdiff o comm...anche utilità grafiche come Rapporto o Diffondere, compresi editori come vimdiff o involucri colorati come colordiff.

Quando e perché confrontare testi e directory in Linux

Confronto tra directory e file in Linux

Un caso molto tipico è quando si effettua un Migrazione del tuo cloud o server personale E vuoi assicurarti che tutto sia stato trasferito correttamente. Immagina di passare da Nextcloud a un'altra soluzione come Filerun: copi i tuoi dati, tutto sembra a posto, ma quando controlli la vecchia copia vedi che ci sono più file rispetto alla nuova posizione.

Invece di passare ore a sfogliare le directory cercando di trovare ciò che manca, la cosa logica da fare è usare terminale e lanciare un comando che rilevare le differenze tra due alberi di directoryIn questa zona il re assoluto è diff, che consente di confrontare sia intere directory che singoli file e offre anche molti parametri per regolare l'output.

È anche comune aver bisogno di questi confronti quando si gestisce versioni di script, file di configurazione o documentiGli sviluppatori utilizzano questi strumenti quotidianamente per vedere cosa è cambiato tra le versioni di un file e persino per preparare patch o integrarlo con sistemi di controllo delle versioni come Git, Mercurial o Bazaar.

Infine, se amministri sistemi o analizzi i registriDovresti almeno padroneggiare i comandi di base, perché ti serviranno spesso. Confronta i registri locali con i registri remotio rivedere le modifiche alla configurazione sulle macchine a cui si accede solo tramite SSH, dove non hai a portata di mano strumenti grafici.

Utilizzo di diff per confrontare le directory in Linux

Il comando diff Non serve solo per confrontare i testi: può anche confrontare le strutture delle directory in modo ricorsivoQuesta funzionalità è molto pratica per convalidare le migrazioni dei dati o le sincronizzazioni dei backup.

Il modo più comodo per confronta due directory complete Utilizzando queste opzioni:

diff -rq 'directorio1' 'directorio2'

In questo esempio, diff È l'utilità di confronto, -r Gli dà istruzioni di scorrere ricorsivamente tutte le sottodirectory e -q Vengono visualizzati sullo schermo solo i file e le cartelle che presentano differenze tra un lato e l'altro, evitando rumori inutili.

Ad esempio, per confronta il contenuto del tuo nuovo cloud Con la vecchia copia, potresti usare qualcosa del tipo:

diff -rq '/home/usuario/Filerun/@Home' '/media/DATOS/copia_nextcloud'

L'output sarà un elenco che indica file presenti solo in una delle directory (con messaggi come "Solo in /percorso: nomefile") o file che esistono in entrambe le posizioni ma il cui contenuto non corrisponde. Questo è un modo molto chiaro per rilevare:

  • File temporanei o nascosto (ad esempio, file) .git o blocchi .~lock.) che sono stati lasciati da parte.
  • Cartelle vuote che forse un'applicazione non è stata caricata sul cloud.
  • Cambiamenti reali in documenti, immagini o script, che dovresti assolutamente esaminare attentamente.

In questi scenari, il problema non è sempre la mancanza di elementi: a volte è lo strumento di sincronizzazione stesso. Ignora i file temporanei, i file di blocco o le directory vuoteE questo è perfettamente accettabile. Ma grazie a diff Puoi vedere esattamente quali elementi non corrispondono e decidere cosa fare al riguardo.

Confronto di due file con diff: binari e testo

L'uso più noto di diff È il confronto di due file per vedere quali parti del contenuto sono cambiateQui è necessario distinguere tra file di testo (in cui è possibile fornire dettagli riga per riga) e file binari, in cui si indicherà solo se sono uguali o meno.

  Il modo giusto per riparare iMessage che non funziona su iPhone

Controlla se due file binari sono uguali

Se vuoi sapere se due documenti in formato ODT, DOC, PDFMP4 o altri binari Sono identici, puoi lanciarne uno diff Basta usare i percorsi di entrambi i file:

diff '/home/usuario/Documento_V1.odt' '/home/usuario/Documento_V2.odt'

Se i documenti sono gli stessi, Non ci sarà alcuna uscita sullo schermoIn caso di eventuali divergenze interne, diff Verrà visualizzato un messaggio come questo:

Los ficheros binarios Documento_V1.odt y Documento_V2.odt son distintos

In questi casi, poiché non si tratta di testo normale, diff non può mostrarti esattamente cosa è cambiatoSi limita ad avvisare che il contenuto interno è diverso. Per confrontare in dettaglio due file ODT, ad esempio, è necessario utilizzare LibreOffice e la sua funzione di confronto documenti.

Confronta in modo approfondito due file di testo o Markdown

quando lavori con file di testo normale, script, configurazione o Markdown, diff Sì, può dettagliare le differenze al millimetro. La sintassi di base è:

diff archivo1 archivo2

Supponiamo che tu abbia due versioni da un file Markdown:

  • /home/usuario/archivo_1.md
  • /home/usuario/archivo_2.md

Durante l'esecuzione:

diff '/home/usuario/archivo_1.md' '/home/usuario/archivo_2.md'

otterrai un output in cui ogni blocco di modifiche Segui questo schema:

linea_fichero_1 tipo_de_cambio linea_fichero_2
< contenido_en_el_primer_fichero
---
> contenido_en_el_segundo_fichero

In questo formato classico, Gli elementi chiave sono:

  • numero_riga_file_1: riga (o intervallo di righe) del primo file interessato dalla modifica.
  • tasso di cambio: può essere a (aggiungere, aggiungere), c (cambiare, cambiare) o d (cancellare, eliminare).
  • numero_riga_file_2: riga (o intervallo) del secondo file interessato dalla modifica.
  • <: contrassegna le righe esattamente come appaiono nel primo file.
  • >: contrassegna le righe corrispondenti nel secondo file.

Ad esempio, se vedi qualcosa del tipo:

9c9
< Para usar GEEKLAND y obtener la diferencias existentes entre dos directorios...
---
> Para usar Diff y obtener la diferencias existentes entre dos directorios...

significa che il La riga 9 del primo file è cambiata rispetto alla riga 9 del secondoSubito sotto < Ti mostra il contenuto originale e > il contenuto è stato modificato, quindi puoi vedere subito la modifica.

Se appare qualcosa del genere:

18a19
> * -q: Para que la salida del comando diff únicamente muestre las diferencias...

Viene interpretato come, confrontando il secondo file con il primo, dopo la riga 18 del file 2 c'è aggiunta una nuova riga 19 il cui contenuto è mostrato dopo il simbolo >.

Visualizza le differenze in modo più visivo con diff -y

Se trovi la notazione classica confusa, diff Offre una modalità più grafica utilizzando l'opzione -y per visualizzare due colonne affiancateInoltre, puoi numerare le linee con cat -n per localizzarti meglio:

diff -y '/ruta/archivo1.md' '/ruta/archivo2.md' | cat -n

In questa modalità, entrambi i file vengono visualizzati in parallelo, con un colonna centrale che utilizza Simboli per fare la differenzaIn questo modo è molto chiaro quali linee vengono modificate, aggiunte o rimosse.

Se vuoi concentrarti solo sulle diverse linee, puoi aggiungere l'opzione --suppress-common-lines:

diff -y --suppress-common-lines 'archivo1.md' 'archivo2.md'

Con ciò le linee identiche scompaiono e vedi solo ciò che è effettivamente cambiato tra i due testi, il che è molto pratico quando il file è lungo e la maggior parte del contenuto è la stessa.

Principali opzioni diff per perfezionare i confronti

Il comando diff ha una buona collezione di parametri che consentono di adattare il confronto a seconda di ciò che ti interessa: ignorare spazi, lettere maiuscole, righe vuote o modificare il formato di output.

Tra le opzioni più comuni (inoltre -r, -q y -y) risaltano:

  • -s: notifica solo quando due file sono identici, utile se è necessario confermare le corrispondenze.
  • -i: ignora le differenze di maiuscole e minuscole nel contenuto testuale.
  • -b: confronta ignorando Spazi vuoti semplice.
  • -E: trascura le differenze di schede tra i file.
  • -Z: ignora spazi alla fine di una riga, molto utile nel codice.
  • -B: non tiene conto del righe vuote quando si confronta.
  • --no-dereferenceEvita di seguire collegamenti simbolici quando si confrontano le directory.
  • --ignore-file-name-case: ignora le differenze tra maiuscole e minuscole nei nomi dei file (quando si confrontano elenchi o directory).
  • --no-ignore-file-name-case: obbliga a tenere conto di queste differenze nei nomi.
  • --suppress-common-lines: con -yNasconde le linee identiche e mette in risalto quelle diverse.

Se vuoi andare oltre e vedere tutte le possibilità, consulta semplicemente il pagina del manuale diff:

man diff

Qui troverai opzioni meno comuni, come l'esclusione di determinati modelli di denominazione, la modifica del formato di output (ad esempio, il formato unificato) -u per le patch) o regolare la dimensione del contesto visualizzato attorno a ogni modifica.

  Tutorial Tesseract OCR per Windows, Python e .NET

diff per un confronto approfondito delle cartelle

Oltre all'esempio di base con -rqÈ possibile combinare diverse opzioni per perfeziona il confronto delle directoryAd esempio, se si desidera ignorare le differenze tra maiuscole e minuscole nei nomi dei file e non seguire i link simbolici, è possibile procedere in questo modo:

diff -rq --no-dereference --ignore-file-name-case dir1 dir2

È anche possibile utilizzare diff -r peccato -q in modo che, oltre ad avvisarti quali file differiscono, mostrarti i dettagli delle differenze di contenuto quando si ha a che fare con file di testo. Tuttavia, in directory molto grandi l'output può essere piuttosto esteso.

Per molti amministratori, confronta le directory in modo ricorsivo Diventa un'attività di routine: controllare che il backup sia completo, controllare se una cartella di configurazione su un server è la stessa di un altro o verificare che due rami di un progetto contengano la stessa struttura di file.

Altri strumenti della console per confrontare testi in Linux

Sebbene diff È l'utilità di punta; l'ecosistema Linux offre Altri comandi molto utili per confrontare i file riga per riga.Alcuni aggiungono viste affiancate, altri richiedono l'ordinamento dei file e altri ancora sfruttano editor di testo avanzati.

sdiff: confronto affiancato in modalità testo

Il comando sdiff È l'ideale se vuoi Visualizza due file affiancati nel terminale, con una barra verticale che indica dove ci sono differenze:

sdiff f1.txt f2.txt

Nell'output vedrai ogni riga del primo file sulla sinistra e la riga corrispondente del secondo file sulla destra. I simboli più comuni sono:

  • |Le due linee confrontate sono diverse.
  • <: riga che appare solo nel primo file.
  • >: riga che appare solo nel secondo file.

Piace diff, sdiff Accetta anche opzioni come -i ignorare le lettere maiuscole e minuscoleCiò consente di concentrarsi esclusivamente sulle modifiche effettive del testo e non sulle variazioni delle maiuscole.

colordiff: output colorato per diff

Leggi un differenza in bianco e nero Può risultare un po' noioso se ci sono molti cambiamenti. colordiff È un piccolo involucro che applica i colori all'output diff per renderlo molto più leggibile:

colordiff archivo1 archivo2

Solitamente, colordiff Utilizza colori diversi per le linee eliminate, aggiunte e modificate, rendendo facile individuare le modifiche a colpo d'occhio. Inoltre, puoi personalizzare i colori modificando il file Di configurazione /etc/colordiffrc secondo le tue preferenze.

comm: confronta i file ordinati e visualizza le linee comuni

Il comando comm è diverso da diff perché Funziona sui file che sono già stati ordinati riga per riga. e produce un output a tre colonne:

comm f1.txt f2.txt

All'uscita troverete:

  • prima colonna: righe univoche del primo file.
  • Seconda colonna: righe univoche dal secondo file.
  • Terza colonna: linee che compaiono in entrambi.

È molto utile per set di dati o elenchi dove si desidera sapere quali voci sono comuni e quali sono uniche per ogni file. Tuttavia, se i file non sono ordinati, comm Ti avvertirà e i risultati non saranno affidabili, quindi dovresti inviare loro un... sort.

cmp: confronto byte per byte

Il comando cmp confronto due file byte per byteÈ un livello inferiore a diffe viene utilizzato per rilevare se due file (di testo o binari) sono esattamente uguali:

cmp archivo1 archivo2

Se i file corrispondono, Non viene visualizzato nulla sullo schermoSe differiscono, cmp indica il primo byte distinto e la sua riga corrispondente Nel caso del testo:

archivo1 archivo2 son distintos: byte 1454, línea 43

Con opzione -b, oltre alla posizione, cmp anche mostra il contenuto dei diversi byte in entrambi i file, il che può essere utile per diagnosi molto precise.

vimdiff (o vim -d): potenza dell'editor Vim per il confronto

Se usi Vim, questo ti interesserà vimdiff, che integra il confronto dei file direttamente all'interno dell'editorIl comando è semplice:

vimdiff archivo1 archivo2

Oh bene:

vim -d archivo1 archivo2

Vim apre i file in più finestre, evidenzia le differenze e ti consente sfogliare, modificare e salvare le modifiche utilizzando i comandi standard di Vim. Supporta anche confronti remoti tramite SSH, ad esempio:

vimdiff /var/log/secure scp://192.168.1.25/var/log/secure

In questo caso stai confrontando un registro locale con uno remoto tramite SSHVim si occupa di richiedere le credenziali e di visualizzare entrambi i file come se fossero presenti localmente.

  Come riparare il profilo utente danneggiato in Windows 10

Strumenti grafici per confrontare testo e directory in Linux

Se non ti senti molto a tuo agio con il terminale o semplicemente preferisci qualcosa di più visivo, Linux offre anche applicazioni grafiche specializzate per il confronto di file e cartelleIl più popolare è probabilmente MeldMa non l'unico.

Meld: interfaccia grafica di Diff per file, directory e progetti

Meld è fondamentalmente un'interfaccia grafica per diffsebbene molto ricco di vitamine. Permette confrontare e unire i file, directory e persino progetti sotto sistemi di controllo di versione come Git, Mercurial, Bazaar o SVN.

Tra le sue caratteristiche più interessanti comprendono:

  • Confronto bidirezionale e tridirezionale di file e directory.
  • Funzione di unione automatica per combinare automaticamente le modifiche quando non ci sono conflitti gravi.
  • Evidenziazione della sintassi e gestione di base dei file dall'interfaccia stessa.
  • Integrazione con sistemi di controllo versione e strumenti da riga di comando come git mergetool.
  • Un codice colore molto chiaro per contrassegnare le righe aggiunte, eliminate o modificate.

L'installazione è semplice perché Meld è presente nei repository della maggior parte delle distribuzioni. Ad esempio:

  • Debian, Ubuntu, Linux Mint e derivati:
    sudo apt install meld
  • Fedora, CentOS, Alma Linux e simili:
    sudo dnf install meld
  • Arch Linux, Manjaro e derivati:
    sudo pacman -S meld
  • SUSE e openSUSE:
    sudo zypper install meld

Quando lo esegui, puoi scegliere se vuoi effettuare un confronto. file, directory o un progetto sotto controllo di versioneSeleziona il primo elemento, clicca su "Confronta" e poi scegli il secondo. Meld ti mostrerà due (o tre) pannelli con il contenuto e un tipico codice colore: Verde per le linee aggiunte, rosso per le linee modificate, grigio barrato per le linee eliminate, ecc.

Inoltre, in ogni blocco di differenza vedrai frecce che consentono di copiare le modifiche da un lato all'altro con un solo clic, il che semplifica notevolmente la sincronizzazione di due versioni di un file senza dover copiare e incollare manualmente riga per riga.

Diffuse e altre alternative grafiche

Un altro strumento grafico interessante è DiffonderePermette inoltre di confrontare e modificare file di testo evidenziandone le differenze. Supporta il confronto di più file e si integra con i sistemi di controllo delle versioni.

Per installare Diffuse Nelle distribuzioni basate su Debian/Ubuntu o Fedora puoi usare:

sudo apt-get install diffuse   # Debian/Ubuntu
sudo dnf install diffuse       # Fedora

Oltre a Meld e Diffuse, ci sono altre opzioni come DiffMerge (multipiattaforma) o plugin integrati in IDE ed editor (VS Code, IntelliJ, ecc.) che offrono interfacce molto raffinate per confrontare e unire il codice.

Suggerimenti e trucchi pratici per confrontare i file in Linux

Il confronto dei file è solo uno strumento; ciò che conta è Applicalo con saggezza a seconda del tipo di dati di cui disponi.Ecco alcuni suggerimenti che ti faranno risparmiare tempo:

  • Se i file contengono elenchi o dati non ordinatiPotresti essere interessato a ordinarli prima con sort prima di usare diff o comm, in modo che il confronto sia più logico.
  • Per evitare falsi positivi nel codice, abituati a usare opzioni come -b, -B o -Z, che ignorano gli spazi vuoti, le righe vuote o gli spazi finali.
  • Se vuoi solo sapere se due file sono uguali senza vedere i dettagli, diff -q o cmp Sono più diretti di un differenziale completo.
  • Quando si confrontano directory di grandi dimensioni, considerare l'utilizzo diff -rq per una prima occhiatae poi approfondire solo i file che appaiono distinti.
  • Negli ambienti di sviluppo, fare affidamento su git diff e altre integrazioni con sistemi di controllo delle versioni, già progettati per evidenziare le modifiche rilevanti nel codice.

Padroneggiare questi strumenti di confronto in Linux ti consente di controllare meglio le tue migrazioni, individuare errori nelle configurazioni, rivedere le modifiche degli script e, in generale, lavorare in modo molto più sicuro quando si gestiscono file criticiCon un po' di pratica, imparerai a usare diff, sdiff, vimdiff, Meld e compagnia quasi a memoria, e scoprirai che risparmiare tempo e grattacapi quando confronti due testi o directory è semplice come lanciare un paio di comandi ben scelti.

Come confrontare e combinare documenti in Word 3
Articolo correlato:
Come confrontare e combinare documenti in Word