Commande diff Linux
Liste complète des commandes Linux
La commande diff Linux est utilisée pour comparer les différences entre les fichiers.
diff compare les fichiers texte ligne par ligne. Si des répertoires sont spécifiés pour la comparaison, diff comparera les fichiers portant le même nom dans les répertoires, mais ne comparera pas les sous-répertoires qu’ils contiennent.
Syntaxe
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
Parameters:
- -<nombre de lignes> Spécifie combien de lignes de texte afficher. Ce paramètre doit être utilisé conjointement avec le paramètre -c ou -u.
- -a ou --text Par défaut, diff compare uniquement les fichiers texte ligne par ligne.
- -b ou --ignore-space-change Ne vérifie pas les différences de caractères d’espacement.
- -B ou --ignore-blank-lines Ne vérifie pas les lignes vides.
- -c Affiche le contenu complet et marque les différences.
- -C<nombre de lignes> ou --context<nombre de lignes> Identique à l’exécution de la commande « -c-<nombre de lignes> ».
- -d ou --minimal Utilise un algorithme différent pour effectuer des comparaisons en unités plus petites.
- -D<nom de macro> ou ifdef<nom de macro> Le format de sortie de ce paramètre peut être utilisé pour les macros de préprocesseur.
- -e ou --ed Le format de sortie de ce paramètre peut être utilisé pour les fichiers de script ed.
- -f ou --forward-ed Le format de sortie est similaire aux fichiers de script ed, mais affiche les différences dans l’ordre du fichier d’origine.
- -H ou --speed-large-files Peut accélérer la comparaison lors de la comparaison de fichiers volumineux.
- -I<caractère ou chaîne> ou --ignore-matching-lines<caractère ou chaîne> Si deux fichiers diffèrent sur certaines lignes, et que ces lignes contiennent toutes le caractère ou la chaîne spécifié(e) dans l'option, les différences entre les deux fichiers ne seront pas affichées.
- -i ou --ignore-case Ne vérifie pas les différences de casse.
- -l ou --paginate Envoie les résultats au programme pr pour la pagination.
- -n ou --rcs Affiche les résultats de la comparaison au format RCS.
- -N ou --new-file Lors de la comparaison de répertoires, si le fichier A n'apparaît que dans un répertoire, l'affichage par défaut est :
- Seulement dans le répertoire : fichier A. Si le paramètre -N est utilisé, diff comparera le fichier A avec un fichier vide.
- -p Si les fichiers comparés sont des fichiers source en langage C, affiche le nom de la fonction où se trouve la différence.
- -P ou --unidirectional-new-file Semblable à -N, mais uniquement lorsque le deuxième répertoire contient un fichier que le premier répertoire n'a pas, ce fichier sera comparé à un fichier vide.
- -q ou --brief Indique seulement s'il y a des différences, pas d'informations détaillées.
- -r ou --recursive Compare les fichiers dans les sous-répertoires.
- -s ou --report-identical-files Si aucune différence n'est trouvée, affiche quand même un message.
- -S<fichier> ou --starting-file<fichier> Lors de la comparaison de répertoires, commence la comparaison à partir du fichier spécifié.
- -t ou --expand-tabs Développe les caractères de tabulation dans la sortie.
- -T ou --initial-tab Ajoute une tabulation au début de chaque ligne pour l'alignement.
- -u, -U<nombre de colonnes> ou --unified=<nombre de colonnes> Affiche les différences entre les contenus de fichiers dans un format fusionné.
- -v ou --version Affiche les informations de version.
- -w ou --ignore-all-space Ignore tous les caractères d'espacement.
- -W<largeur> ou --width<largeur> Lors de l'utilisation du paramètre -y, spécifie la largeur de colonne.
- -x<nom de fichier ou répertoire> ou --exclude<nom de fichier ou répertoire> Ne compare pas les fichiers ou répertoires spécifiés dans l'option.
- -X<fichier> ou --exclude-from<fichier> Vous pouvez enregistrer des types de fichiers ou de répertoires dans un fichier texte, puis spécifier ce fichier texte dans =<fichier>.
- -y ou --side-by-side Affiche les similitudes et les différences entre les fichiers dans un format côte à côte.
- --help Affiche l'aide.
- --left-column Lors de l'utilisation du paramètre -y, si le contenu d'une ligne dans les deux fichiers est identique, le contenu de la ligne n'est affiché que dans la colonne de gauche.
- --suppress-common-lines Lors de l'utilisation du paramètre -y, affiche uniquement les différences.
Exemple 1 : Comparer deux fichiers
[root@localhost test3]# diff log2014.log log2013.log 3c3 < 2014-03 --- > 2013-03 8c8 < 2013-07 --- > 2013-08 11,12d10 < 2013-11 < 2013-12
Les "3c3" et "8c8" ci-dessus indiquent que les fichiers log2014.log et log20143log ont un contenu différent aux lignes 3 et 8 ; "11,12d10" indique que le premier fichier a les lignes 11 et 12 en plus par rapport au second fichier.
Exemple 2 : Sortie au format côte à côte
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 <
2013-12 <
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
Explication :
- "|" indique que le contenu des deux fichiers diffère.
- "<" indique que le second fichier a une ligne de contenu de moins que le premier fichier.
- ">" indique que le second fichier a une ligne de contenu de plus que le premier fichier.