Tengo varios archivos en un directorio y quiero verificar que sean únicos. Para simplificar, digamos que tengo tres archivos: foo.txt
, bar.txt
y baz.txt
. Si ejecuto este ciclo, los comprobaré uno contra el otro:
$ 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 los cientos de archivos que quiero tratar, esto se volvería bastante ilegible; sería mejor para listar los archivos que hacen partido, y luego me puede mirar por encima de la lista de forma rápida y asegurarse de que los archivos sólo son coincidentes sí mismos. Desde la página de manual, habría pensado que la -s
opción lograría esto:
$ 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
... sin embargo, de hecho, también imprime todo el contenido de los archivos que difieren. ¿Hay alguna forma de suprimir este comportamiento, por lo que solo obtengo el comportamiento anterior?
Alternativamente, ¿hay alguna otra herramienta que pueda lograr esto ?