У меня есть несколько файлов в каталоге, и я хочу проверить, все ли они уникальны. Для простоты предположим, что у меня есть три файла: foo.txt
, bar.txt
и baz.txt
. Если я запустите этот цикл, я проверю их все друг против друга:
$ 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
Для сотен файлов, с которыми я хочу иметь дело, это станет довольно нечитаемым; было бы лучше , чтобы перечислить файлы , которые делают матч, и тогда я могу просмотреть список быстро и убедитесь , что файлы только соответствующим себя. С man-страницы, я бы подумал, что -s
вариант сделает это:
$ 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
... однако на самом деле это также распечатывает все содержимое любых файлов, которые отличаются. Есть ли способ подавить это поведение, поэтому я получаю только поведение выше?
В качестве альтернативы, есть ли другой инструмент, который может это сделать ?