J'ai un certain nombre de fichiers dans un répertoire et je veux vérifier qu'ils sont tous uniques. Pour simplifier, disons que j'ai trois fichiers: foo.txt
, bar.txt
et baz.txt
. Si je lance cette boucle, je les vérifierai tous les uns contre les autres:
$ for f in ./*; do for i in ./*; do diff -q "$f" "$i"; done; done
Files bar.txt and baz.txt differ
Files bar.txt and foo.txt differ
Files baz.txt and bar.txt differ
Files baz.txt and foo.txt differ
Files foo.txt and bar.txt differ
Files foo.txt and baz.txt differ
Pour les centaines de fichiers que je veux traiter, cela deviendrait assez illisible; il serait préférable de lister les fichiers qui font match et je peux regarder par- dessus la liste rapidement et assurez - vous que les fichiers ne sont eux - mêmes correspondent. À partir de la page de manuel, j'aurais pensé que l' -s
option accomplirait ceci:
$ for f in ./*; do for i in ./*; do diff -s "$f" "$i"; done; done
Files bar.txt and bar.txt are identical
Files baz.txt and baz.txt are identical
Files foo.txt and foo.txt are identical
... cependant, en fait, il imprime également tout le contenu des fichiers qui diffèrent. Existe-t-il un moyen de supprimer ce comportement, donc je ne reçois que le comportement ci-dessus?
Sinon, existe-t-il un autre outil qui peut accomplir cela ?