Comment comparer deux textes et répertoires pour en identifier les différences sous Linux

Dernière mise à jour: 12/12/2025
Auteur: Isaac
  • En Linux Nous pouvons comparer des fichiers et des répertoires avec des outils en ligne de commande comme diff, sdiff, cmp, comm ou vimdiff, et avec des interfaces graphiques comme Meld ou Diffuse.
  • La commande diff vous permet de voir les différences ligne par ligne, d'ignorer les espaces, les lettres majuscules ou les lignes vides, et de comparer récursivement des répertoires entiers avec des options telles que -r, -qo ou -y.
  • Les outils graphiques comme Meld facilitent la comparaison et la fusion de fichiers et de dossiers grâce à des couleurs et des flèches, et permettent même l'intégration avec les systèmes de contrôle de version.

Outils de comparaison de textes sous Linux

Lorsque vous travaillez quotidiennement avec Linux et fichiers texteTôt ou tard, vous aurez besoin de vérifier si deux fichiers ou répertoires sont identiques. Cela peut se produire après une migration de données, lors de la mise à jour d'une application, lors de la consultation de sauvegardes ou tout simplement en comparant deux versions d'un même document. scénario ou un document.

Ces types de tâches, qui peuvent à première vue sembler fastidieuses si on les effectue « à l'œil », deviennent très simples si l'on en maîtrise quelques-unes. outils de comparaison de fichiers et de répertoiresSous Linux, les options vont de commandes classiques comme diff, sdiff o comm...même les utilitaires graphiques tels que Meld o Diffuser, y compris des rédacteurs tels que vimdiff ou des emballages colorés comme couleurdiff.

Quand et pourquoi comparer des textes et des répertoires sous Linux

Comparaison de répertoires et de fichiers sous Linux

Un cas très typique est celui où vous faites un Migration de votre cloud personnel ou de votre serveur Vous voulez vous assurer que tout a été transféré correctement. Imaginez que vous passiez de Nextcloud à une autre solution comme Filerun : vous copiez vos données, tout semble bien se passer, mais lorsque vous vérifiez l’ancienne copie, vous constatez qu’il y a plus de fichiers que dans le nouvel emplacement.

Au lieu de passer des heures à parcourir des répertoires pour trouver ce qui manque, la solution logique consiste à utiliser terminal et lancer une commande qui détecter les différences entre deux arbres de répertoiresDans ce domaine, le roi absolu est diff, qui permet de comparer aussi bien des répertoires entiers que des fichiers individuels, et offre également de nombreux paramètres pour ajuster le résultat.

Il est également fréquent d'avoir besoin de ces comparaisons lors de la gestion versions de scripts, de fichiers de configuration ou de documentsLes développeurs utilisent quotidiennement ces outils pour voir ce qui a changé entre les versions d'un fichier, et même pour préparer des correctifs ou les intégrer à des systèmes de contrôle de version comme Git, Mercurial ou Bazaar.

Enfin, si vous administrez des systèmes ou analysez journauxVous devriez au moins maîtriser les commandes de base, car vous en aurez souvent besoin. Comparer les journaux locaux avec les journaux distantsou consulter les modifications de configuration sur les machines auxquelles vous accédez uniquement via SSH, où vous n'avez pas d'outils graphiques à disposition.

Utiliser diff pour comparer des répertoires sous Linux

La commande diff Ce n'est pas seulement pour comparer des textes : cela peut aussi comparer les structures de répertoires de manière récursiveC'est très pratique pour valider les migrations de données ou les synchronisations de sauvegarde.

Le moyen le plus pratique de comparer deux répertoires complets C'est en utilisant ces options :

diff -rq 'directorio1' 'directorio2'

Dans cet exemple, diff Il s'agit de l'utilité de comparaison, -r Il lui demande de parcourir récursivement tous les sous-répertoires, et -q Il n'affiche à l'écran que les fichiers et dossiers présentant des différences entre les deux faces, évitant ainsi les distractions inutiles.

Par exemple, pour comparez le contenu de votre nouveau cloud Avec l'ancienne version, vous pourriez utiliser quelque chose comme :

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

Le résultat sera une liste indiquant fichiers présents dans un seul des répertoires (avec des messages comme « Uniquement dans /chemin : nom_de_fichier ») ou des fichiers présents aux deux emplacements mais dont le contenu diffère. C’est une méthode très claire pour détecter :

  • Fichiers temporaires ou caché (par exemple, des fichiers) .git ou blocages .~lock.) qui ont été laissées de côté.
  • Dossiers vides Il se peut qu'une application n'ait pas été téléchargée sur le cloud.
  • De véritables changements dans des documents, des images ou des scripts, que vous devriez absolument examiner attentivement.

Dans ces cas-là, le problème ne vient pas toujours d'éléments manquants : parfois, c'est l'outil de synchronisation lui-même qui est en cause. Ignorer les fichiers temporaires, les fichiers de verrouillage ou les répertoires videsEt c'est parfaitement acceptable. Mais grâce à diff Vous pouvez voir précisément quels éléments ne correspondent pas et décider de la marche à suivre.

Comparaison de deux fichiers avec diff : binaires et texte

L'utilisation la plus connue de diff Il s'agit de la comparaison de deux fichiers pour voir quelles parties du contenu ont été modifiéesIl vous faut ici faire la distinction entre les fichiers texte (où vous pouvez détailler ligne par ligne) et les fichiers binaires, où vous indiquerez seulement s'ils sont identiques ou non.

  Achetez les meilleurs disques durs externes cryptés [Guide 2020]

Vérifier si deux fichiers binaires sont égaux

Si vous voulez savoir si deux documents au format ODT, DOC, PDFMP4 ou autres fichiers binaires Ils sont identiques, vous pouvez en lancer un diff Il suffit d'utiliser les chemins d'accès des deux fichiers :

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

Si les documents sont identiques, Il n'y aura aucun affichage à l'écran.En cas de divergences internes, diff Il affichera un message comme celui-ci :

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

Dans ces cas, comme il ne s'agit pas de texte brut, diff ne peut pas vous montrer exactement ce qui a changé.Il signale seulement une différence de contenu interne. Pour comparer deux fichiers ODT en détail, par exemple, il faudrait utiliser LibreOffice et sa fonction de comparaison de documents.

Comparer deux fichiers texte ou Markdown en détail

quand tu travailles avec fichiers texte brut, scripts, configuration ou Markdown, diff Oui, il peut détailler les différences au millimètre près. La syntaxe de base est :

diff archivo1 archivo2

Supposons que vous ayez deux versions à partir d'un fichier Markdown :

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

En course à pied :

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

vous obtiendrez un résultat où chaque bloc de changements Suivez ce modèle :

linea_fichero_1 tipo_de_cambio linea_fichero_2
< contenido_en_el_primer_fichero
---
> contenido_en_el_segundo_fichero

Dans ce format classique, Les éléments clés sont:

  • numéro_de_ligne_fichier_1: ligne (ou plage de lignes) du premier fichier concerné par la modification.
  • taux de change: Peut être a (ajouter, ajouter), c (changement, changement) ou d (supprimer, effacer).
  • numéro_de_ligne_fichier_2: ligne (ou plage) du deuxième fichier affecté par la modification.
  • <: marque les lignes exactement comme elles apparaissent dans le premier fichier.
  • >: marque les lignes correspondantes dans le deuxième fichier.

Par exemple, si vous voyez quelque chose comme :

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

signifie que le La ligne 9 du premier fichier a été modifiée par rapport à la ligne 9 du second.Immédiatement en dessous < Il vous montre le contenu original et > Le contenu a été modifié, vous pouvez donc constater le changement immédiatement.

Si quelque chose comme ceci apparaît :

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

Cela est interprété comme, comparer le deuxième fichier avec le premier, après la ligne 18 du fichier 2, il y a ajout d'une nouvelle ligne 19 dont le contenu est affiché après le symbole >.

Visualisez plus clairement les différences avec diff -y

Si vous trouvez la notation classique déroutante, diff Il offre un mode plus graphique grâce à l'option -y pour afficher deux colonnes côte à côteDe plus, vous pouvez numéroter les lignes avec cat -n pour mieux vous localiser :

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

Dans ce mode, les deux fichiers sont affichés en parallèle, avec un colonne centrale qui utilise Symboles faire la différenceCela permet de voir très clairement quelles lignes sont modifiées, ajoutées ou supprimées.

Si vous souhaitez vous concentrer uniquement sur les différentes lignes, vous pouvez ajouter l'option --suppress-common-lines:

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

Ainsi Les lignes identiques disparaissent et vous ne voyez que ce qui a réellement changé entre les deux textes, ce qui est très pratique lorsque le fichier est long et que la majeure partie du contenu est identique.

Principales options de différence pour affiner les comparaisons

La commande diff possède une bonne collection de paramètres qui permettent d'adapter la comparaison Selon vos intérêts : ignorer les espaces, les majuscules, les lignes vides ou modifier le format de sortie.

Parmi les options les plus courantes (en plus de -r, -q y -y) ressortir:

  • -s: notifie uniquement lorsque deux fichiers sont identiques, utile si vous devez confirmer des correspondances.
  • -i: ignore les différences de majuscules et minuscules dans le contenu textuel.
  • -b: comparer en ignorant Blancs simple.
  • -E: néglige les différences de tabulations entre les fichiers.
  • -Z: ignore espaces à la fin d'une ligne, très utile en programmation.
  • -B: ne tient pas compte du lignes vides lors de la comparaison.
  • --no-dereferenceÉvitez de suivre liens symboliques lorsque vous comparez des répertoires.
  • --ignore-file-name-case: ignore les différences de casse dans les noms de fichiers (lors de la comparaison de listes ou de répertoires).
  • --no-ignore-file-name-case: oblige à prendre en compte ces différences de noms.
  • --suppress-common-lines: avec -yElle masque les lignes identiques et met en valeur celles qui diffèrent.

Si vous souhaitez aller plus loin et découvrir toutes les possibilités, consultez simplement le page du manuel diff:

man diff

Vous y trouverez des options moins courantes, telles que l'exclusion de certains modèles de nommage, la modification du format de sortie (par exemple, le format unifié). -u (pour les correctifs) ou ajuster la taille du contexte affiché autour de chaque modification.

  Comment supprimer les cookies dans Safari sur iPhone, iPad et Mac : un guide complet

diff pour une comparaison approfondie des dossiers

En plus de l'exemple de base avec -rqVous pouvez combiner plusieurs options pour affiner la comparaison de répertoiresPar exemple, si vous souhaitez ignorer les différences de casse dans les noms de fichiers et ne pas suivre les liens symboliques, vous pouvez procéder comme suit :

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

Il est également possible d'utiliser diff -r sans -q afin que, outre le fait de vous signaler quels fichiers diffèrent, vous montrer les détails des différences de contenu Lors du traitement de fichiers texte, le résultat peut être assez volumineux dans les répertoires très volumineux.

Pour de nombreux administrateurs, comparer les répertoires de manière récursive Cela devient une tâche de routine : vérifier que la sauvegarde est complète, vérifier si un dossier de configuration sur un serveur est identique à celui sur un autre, ou vérifier que deux branches d’un projet contiennent la même structure de fichiers.

Autres outils en ligne de commande pour comparer des textes sous Linux

Bien que diff C'est l'utilitaire phare ; l'écosystème Linux offre D'autres commandes très utiles pour comparer les fichiers ligne par ligne.Certains ajoutent des vues côte à côte, d'autres exigent que les fichiers soient triés, et d'autres encore tirent parti d'éditeurs de texte avancés.

sdiff : comparaison côte à côte en mode texte

La commande sdiff C'est idéal si vous voulez Afficher deux fichiers côte à côte dans le terminal, avec une barre verticale indiquant les différences :

sdiff f1.txt f2.txt

Dans le résultat, vous verrez chaque ligne du premier fichier à gauche et la ligne correspondante du deuxième fichier à droite. Les symboles les plus courants sont:

  • |Les deux lignes comparées sont différentes.
  • <: ligne qui apparaît uniquement dans le premier fichier.
  • >: ligne qui apparaît uniquement dans le deuxième fichier.

Pareil que diff, sdiff Il accepte également des options telles que -i ignorer les lettres majuscules et minusculesCela vous permet de vous concentrer uniquement sur les modifications de texte proprement dites et non sur les variations de majuscules.

colordiff : sortie colorée pour diff

Lire un différence en noir et blanc Cela peut devenir un peu fastidieux s'il y a beaucoup de changements. colordiff C'est un petit emballage qui applique des couleurs à la sortie diff pour le rendre beaucoup plus lisible :

colordiff archivo1 archivo2

En règle générale, colordiff Il utilise des couleurs différentes pour les lignes supprimées, ajoutées et modifiées, ce qui permet de repérer facilement les changements en un coup d'œil. De plus, vous pouvez Personnalisez les couleurs en modifiant le fichier De configuration /etc/colordiffrc selon vos préférences.

comm : comparer les fichiers triés et afficher les lignes communes

La commande comm est différent de diff parce que Cela fonctionne sur des fichiers déjà triés ligne par ligne. et produit un résultat à trois colonnes :

comm f1.txt f2.txt

À la sortie, vous trouverez :

  • Première colonne: lignes uniques du premier fichier.
  • Deuxième colonne: lignes uniques du deuxième fichier.
  • Troisième colonne: lignes qui apparaissent dans les deux.

C'est très utile pour ensembles de données ou listes où vous souhaitez savoir quelles entrées sont communes et lesquelles sont spécifiques à chaque fichier. Cependant, si les fichiers ne sont pas triés, comm Il vous avertira et les résultats ne seront pas fiables, vous devriez donc leur envoyer un... sort.

cmp : comparaison octet par octet

La commande cmp comparer deux fichiers octet par octetIl s'agit d'un niveau inférieur à diffet sert à détecter si deux fichiers (texte ou binaire) sont exactement identiques :

cmp archivo1 archivo2

Si les fichiers correspondent, Rien ne s'affiche à l'écran.S'ils diffèrent, cmp indique le premier octet distinct et sa ligne correspondante Dans le cas du texte :

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

Avec l'option -b, en plus du poste, cmp aussi affiche le contenu des différents octets dans les deux fichiers, ce qui peut s'avérer utile pour des diagnostics très précis.

vimdiff (ou vim -d) : puissance de l’éditeur Vim à des fins de comparaison

Si vous utilisez Vim, ceci pourrait vous intéresser. vimdiff, qui intègre la comparaison de fichiers directement dans l'éditeurLa commande est aussi simple que :

vimdiff archivo1 archivo2

ou bien:

vim -d archivo1 archivo2

Vim ouvre les fichiers dans plusieurs fenêtres, met en évidence les différences et vous permet de Parcourir, modifier et enregistrer les modifications Il utilise les commandes Vim standard. Il prend également en charge les comparaisons à distance via SSH, par exemple :

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

Dans ce cas, vous comparez Un journal local associé à un journal distant via SSHVim se charge de demander les identifiants et d'afficher les deux fichiers comme si vous les aviez en local.

  Comment ajouter la prise en charge JPEG-XL dans Windows 11

Outils graphiques pour comparer du texte et des répertoires sous Linux

Si vous n'êtes pas très à l'aise avec le terminal ou si vous préférez simplement une interface plus visuelle, Linux propose également applications graphiques spécialisées pour la comparaison de fichiers et de dossiersLe plus populaire est probablement MeldMais pas le seul.

Meld : l’interface graphique de Diff pour les fichiers, les répertoires et les projets.

Meld est essentiellement une interface graphique pour diffbien que très riche en vitamines. Cela permet comparer et fusionner des fichiers, les répertoires et même les projets sous des systèmes de contrôle de version tels que Git, Mercurial, Bazaar ou SVN.

Parmi ses caractéristiques les plus intéressantes comprennent:

  • comparaison bidirectionnelle et tridirectionnelle des fichiers et des répertoires.
  • Fonction de fusion automatique combiner automatiquement les modifications lorsqu'il n'y a pas de conflits sérieux.
  • Mise en évidence de la syntaxe et la gestion de base des fichiers directement depuis l'interface.
  • Intégration avec les systèmes de contrôle de version et des outils en ligne de commande tels que git mergetool.
  • Un code couleur très clair pour marquer les lignes ajoutées, supprimées ou modifiées.

L'installation est simple car Meld est présent dans les dépôts de la plupart des distributions.. Par exemple:

  • Debian, Ubuntu, Linux Mint et dérivés:
    sudo apt install meld
  • Fedora, CentOS, Alma Linux et similaires :
    sudo dnf install meld
  • Arch Linux, Manjaro et dérivés:
    sudo pacman -S meld
  • SUSE et openSUSE :
    sudo zypper install meld

Lorsque vous l'exécutez, vous choisissez si vous souhaitez effectuer une comparaison. fichiers, répertoires ou un projet sous contrôle de versionSélectionnez le premier élément, cliquez sur « Comparer », puis choisissez le second. Meld affichera deux (ou trois) panneaux contenant le contenu et un code couleur typique : Vert pour les lignes ajoutées, rouge pour les lignes modifiées, gris barré pour les lignes supprimées, etc.

De plus, dans chaque bloc de différence, vous verrez flèches permettant de copier les modifications d'un côté à l'autre d'un seul clic, ce qui simplifie grandement la synchronisation de deux versions d'un fichier sans avoir à copier-coller manuellement ligne par ligne.

Diffuse et autres alternatives graphiques

Un autre outil graphique intéressant est DiffuserIl permet également de comparer et de modifier des fichiers texte avec mise en évidence des différences. Il prend en charge la comparaison de plusieurs fichiers et s'intègre aux systèmes de contrôle de version.

Pour installer Diffuse Sur les distributions basées sur Debian/Ubuntu ou Fedora, vous pouvez utiliser :

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

Outre Fusion et Diffusion, il existe d'autres options telles que : DiffMerge (multiplateforme) ou des plugins intégrés dans les IDE et les éditeurs (VS Code, IntelliJ, etc.) qui offrent des interfaces très soignées pour comparer et fusionner du code.

Conseils et astuces pratiques pour comparer des fichiers sous Linux

Comparer des fichiers n'est qu'un outil ; ce qui importe, c'est Utilisez-le judicieusement en fonction du type de données dont vous disposez.Voici quelques astuces pour gagner du temps :

  • Si les fichiers contiennent listes non ordonnées ou donnéesVous pourriez être intéressé à les commander d'abord avec sort avant d'utiliser diff o comm, afin que la comparaison soit plus logique.
  • Pour éviter les faux positifs dans le code, habituez-vous à utiliser des options comme -b, -B o -Z, qui ignorent les espaces vides, les lignes vides ou les espaces de fin.
  • Si vous souhaitez simplement savoir si deux fichiers sont identiques sans en voir les détails, diff -q o cmp Ils sont plus directs qu'un différentiel complet.
  • Lors de la comparaison de grands répertoires, envisagez d'utiliser diff -rq pour un premier aperçuet ensuite, n'approfondir que les fichiers qui apparaissent comme distincts.
  • Dans les environnements de développement, s'appuyer sur git diff et autres intégrations avec les systèmes de contrôle de version, qui sont déjà conçus pour mettre en évidence les modifications pertinentes du code.

La maîtrise de ces outils de comparaison sous Linux vous permet de mieux contrôler vos migrations, de localiser les erreurs de configuration, d'examiner les modifications de scripts et, en général, travailler de manière beaucoup plus sûre lors de la manipulation de fichiers critiquesAvec un peu de pratique, vous utiliserez diff, sdiff, vimdiff, Meld et compagnie presque par cœur, et vous constaterez que gagner du temps et éviter des maux de tête lors de la comparaison de deux textes ou répertoires est aussi simple que de lancer quelques commandes bien choisies.

Comment comparer et combiner des documents dans Word 3
Article connexe:
Comment comparer et combiner des documents dans Word