Eu tenho vários arquivos em um diretório e quero verificar se todos são únicos. Para simplificar, vamos dizer que tenho três arquivos: foo.txt
, bar.txt
e baz.txt
. Se eu executar esse loop, verificarei todos eles um contra o outro:
$ 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
Para as centenas de arquivos com os quais quero lidar, isso se tornaria bastante ilegível; seria melhor para listar os arquivos que fazem jogo, e então eu posso olhar sobre a lista rapidamente e certifique-se de que apenas os arquivos estão se combinando. Na página de manual, eu teria pensado que a -s
opção conseguiria isso:
$ 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
... no entanto, na verdade, ele também imprime todo o conteúdo de qualquer arquivo que seja diferente. Existe alguma maneira de suprimir esse comportamento, então eu só recebo o comportamento acima?
Como alternativa, existe alguma outra ferramenta que pode fazer isso ?