GNU/Linux >> Tutoriels Linux >  >> Linux

Le moyen le plus rapide de savoir si deux fichiers ont le même contenu sous Unix/Linux ?

J'aime que @Alex Howansky ait utilisé 'cmp --silent' pour cela. Mais j'ai besoin d'une réponse à la fois positive et négative, donc j'utilise :

cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'

Je peux ensuite l'exécuter dans le terminal ou avec un ssh pour vérifier les fichiers par rapport à un fichier constant.


Pour rapidement et en toute sécurité comparer deux fichiers :

if cmp --silent -- "$FILE1" "$FILE2"; then
  echo "files contents are identical"
else
  echo "files differ"
fi

Il est lisible, efficace et fonctionne pour tous les noms de fichiers, y compris "` $()


Je crois cmp s'arrêtera au premier octet de différence :

cmp --silent $old $new || echo "files are different"

Parce que je suis nul et que je n'ai pas assez de points de réputation, je ne peux pas ajouter cette friandise en tant que commentaire.

Mais, si vous allez utiliser le cmp commande (et n'avez pas besoin/ne voulez pas être verbeux), vous pouvez simplement saisir le statut de sortie. Selon le cmp page de manuel :

Si un FICHIER est '-' ou manquant, lire l'entrée standard. L'état de sortie est 0 si les entrées sont identiques, 1 si elles sont différentes, 2 en cas de problème.

Ainsi, vous pourriez faire quelque chose comme :

STATUS="$(cmp --silent $FILE1 $FILE2; echo $?)"  # "$?" gives exit status for each comparison

if [[ $STATUS -ne 0 ]]; then  # if status isn't equal to 0, then execute code
    DO A COMMAND ON $FILE1
else
    DO SOMETHING ELSE
fi

EDIT :Merci pour les commentaires à tous ! J'ai mis à jour la syntaxe du test ici. Cependant, je vous suggère d'utiliser la réponse de Vasili si vous recherchez quelque chose de similaire à cette réponse en termes de lisibilité, de style et de syntaxe.


Linux
  1. Avons-nous une annulation sous Linux ?

  2. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  3. Le moyen le plus rapide d'extraire un iso ?

  4. Comparez deux images à la manière python/linux

  5. Comment faire la différence (uniquement les ajouts) entre deux fichiers sous Linux

Linux vs Unix :Quelle est la différence ?

Comment éditer des fichiers PDF sous Linux de la manière la plus simple possible

Comment comparer deux fichiers dans un terminal Linux

Le moyen le plus rapide de compter les fichiers de manière récursive sous Linux

Commande ls sous Linux/UNIX

Quel est le moyen le plus rapide de supprimer tous les fichiers et sous-dossiers d'un répertoire ?