Na pewno nie jest to optymalne, ale przynajmniej działa :P
Próbowałem to tylko z wykorzystaniem find zrobić (tzn. bez skryptu), ale niestety nie mogę diff wyciszyć :(
#!/bin/sh
for pl1 in `find . -name "*"`
do
for pl2 in `find . -name "*"`
do
if [ -f $pl1 -a -f $pl2 -a ! $pl1 -ef $pl2 ] && diff $pl1 $pl2 > /dev/null
then
echo $pl1 $pl2
fi
done
done
/* dopisane */
To będzie lepsze. Tylko raz find wywołamy i to od razu find sprawdzi, czy to jest plik regularny
#!/bin/sh
# usage: skrypt.sh sciezka_do_katalogu
# odczytujemy wszystkie pliki z katalogu podanego na wejsciu
# wyszukujemy tylko pliki regularne (-type f)
pliki=`find $1 -type f`
# podwojna petelka, czyli przelecimy kazda pare i jeżeli to są identyczne pliki, ale nie te same, to wypisemy
for pl1 in $pliki
do
for pl2 in $pliki
do
# sprawdzamy, czy to nie jest ten sam plik i czy pliki sa identyczne
if [ ! $pl1 -ef $pl2 ] && diff $pl1 $pl2 > /dev/null
then
echo $pl1 $pl2
fi
done
done