Comment différencier la sortie de plusieurs commandes? vimdiff
peut prendre en charge jusqu'à quatre fichiers, mais diff
semble prendre en charge exactement deux fichiers.
Est-il directement possible avec une variante de diff
, ou dois-je enregistrer la sortie de toutes les commandes dans des fichiers temporaires, en choisir une et en différer le reste avec?
Le contexte:
Je dois vérifier la sortie d'une certaine commande sur plusieurs serveurs et voir s'ils sont tous d'accord. Pour le moment, il suffit de signaler si des différences sont trouvées, mais si possible, j'aimerais pouvoir dire: X% serveurs sont d'accord, Y% les uns avec les autres; ou que le serveur Z est étrange.
J'ai une configuration LDAP multi-maître à quatre voies et je veux vérifier que les ContextCSN
valeurs des quatre sont en accord les unes avec les autres.
Alors maintenant je fais:
#! /bin/bash
for i in {1..4}.ldap
do
ldapsearch -x -LLL -H ldap://$i -s base -b dc=example,dc=com contextCSN > $i.csn;
done
set -e
for i in {2..4}
do
diff -q 1.csn $i.csn
done
Et vérifiez le code d'erreur du script. Existe-t-il de meilleurs outils pour cela?
Tous les outils pouvant être utilisés sur Ubuntu 14.04 sont les bienvenus.
L'
fdupes
outil peut vous être utile ici (devrait être dans les référentiels). Si vous avez un grand nombre de fichiers à comparer, vous pouvez l'utiliser pour réduire le travail que vous avez à faire en identifiant ceux qui sont déjà identiques. Comme indiqué ci-dessous, il ne fonctionne qu'avec des arguments de répertoire. Si vous avez tous les fichiers à différencier dans un répertoire, vous pouvez faire quelque chose comme:Identifier les fichiers identiques. Ou:
Identifier les fichiers uniques.
La
diff3
commande peut également être utile.la source
fdupes
semble avoir besoin d'un répertoire comme argument (facile à contourner), mais oui, le nombre de fichiers renvoyés parfdupes
est très utile.Si vous voulez seulement voir si les fichiers sont d'accord, vous n'avez pas vraiment besoin de diff. Utilisez simplement
sha1sum
ou quelque chose comme ça.par exemple:
Cela vous donnera une liste de paires de serveurs, sha1sum séparées par des espaces. Les serveurs avec le même sha1sum ont la même sortie:
Vous pouvez effectuer un traitement supplémentaire pour obtenir une liste de serveurs correspondants, par exemple:
ce qui donne une sortie telle que:
la source