Réponse supplémentaire
S'il n'est pas nécessaire de savoir quelles parties des fichiers diffèrent, vous pouvez utiliser la somme de contrôle du fichier. Il existe plusieurs façons de le faire, en utilisant md5sum
ou sha256sum
. Fondamentalement, chacun d'eux génère une chaîne à laquelle le contenu d'un fichier est haché. Si les deux fichiers sont identiques, leur hachage sera le même. Ceci est souvent utilisé lorsque vous téléchargez des logiciels, tels que les images iso d'installation Ubuntu. Ils sont souvent utilisés pour vérifier l'intégrité d'un contenu téléchargé.
Considérez le script ci-dessous, où vous pouvez donner deux fichiers en arguments, et le fichier vous dira s'ils sont identiques ou non.
#!/bin/bash
# Check if both files exist
if ! [ -e "" ];
then
printf "%s doesn't exist\n" ""
exit 2
elif ! [ -e "" ]
then
printf "%s doesn't exist\n" ""
exit 2
fi
# Get checksums of eithe file
file1_sha=$( sha256sum "" | awk '{print }')
file2_sha=$( sha256sum "" | awk '{print }')
# Compare the checksums
if [ "x$file1_sha" = "x$file2_sha" ]
then
printf "Files %s and %s are the same\n" "" ""
exit 0
else
printf "Files %s and %s are different\n" "" ""
exit 1
fi
Exemple:
$ ./compare_files.sh /etc/passwd ./passwd_copy.txt
Files /etc/passwd and ./passwd_copy.txt are the same
$ echo $?
0
$ ./compare_files.sh /etc/passwd /etc/default/grub
Files /etc/passwd and /etc/default/grub are different
$ echo $?
1
Réponse plus ancienne
De plus, il y a la commande comm
, qui compare deux fichiers triés et donne une sortie en trois colonnes: colonne 1 pour les éléments uniques au fichier # 1, colonne 2 pour les éléments uniques au fichier # 2 et colonne 3 pour les éléments présent dans les deux fichiers.
Pour supprimer l'une des colonnes, vous pouvez utiliser les commutateurs -1, -2 et -3. Utiliser -3 affichera les lignes qui diffèrent.
Ci-dessous vous pouvez voir la capture d'écran de la commande en action.
Il n’ya qu’une seule exigence: les fichiers doivent être triés pour pouvoir être comparés correctement. La commande sort
peut être utilisée à cette fin. Ci-dessous, une autre capture d'écran, où les fichiers sont triés puis comparés. Les lignes commençant à gauche par File_1 uniquement, les lignes commençant par la colonne 2 appartiennent uniquement à File_2 uniquement