Que tal algo como
mostdifs=-1;
for f1 in path/to/files/*.out; do
for f2 in path/to/files/*.out; do
difs=$(diff "$f1" "$f2" | wc -l);
[ "$difs" -gt "$mostdifs" ] && mostdifs=$difs && mostdif="$f1 : $f2";
done
done
echo "$mostdif"
Isto é muito simplista, você poderia melhorá-lo testando se $f1
é o mesmo arquivo que $f2
e por vários outros ajustes, mas se estamos falando de algumas centenas de arquivos de texto, ele será executado em segundos. a complexidade extra pode não valer a pena.
A ideia é executar diff
em cada par de arquivos e examinar o número de linhas retornadas. Se esse número for maior que o maior atual, salve os nomes dos arquivos.