Ich habe eine Reihe von Dateien in einem Verzeichnis und möchte überprüfen, ob sie alle eindeutig sind. Der Einfachheit halber sagen wir , ich habe drei Dateien: foo.txt
, bar.txt
und baz.txt
. Wenn ich diese Schleife durchführe, überprüfe ich sie alle gegeneinander:
$ 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
Für die Hunderte von Dateien, mit denen ich mich befassen möchte, würde dies ziemlich unlesbar werden. Es wäre besser, die Dateien aufzulisten, die übereinstimmen, und dann kann ich die Liste schnell durchsehen und sicherstellen, dass die Dateien nur mit sich selbst übereinstimmen. Von der Manpage aus hätte ich gedacht, dass die -s
Option dies erreichen würde:
$ 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
Tatsächlich wird jedoch auch der gesamte Inhalt aller abweichenden Dateien ausgedruckt. Gibt es eine Möglichkeit, dieses Verhalten zu unterdrücken, sodass ich nur das obige Verhalten erhalte?
Alternativ gibt es ein anderes Tool, mit dem dies erreicht werden kann ?