Eu modifiquei o script para fazer o loop dos arquivos 4 por 4 - testado em 20 arquivos, parece que está funcionando. O script armazenará os nomes dos arquivos em uma matriz e, em seguida, os conectará 4 por 4:
temp=$(mktemp)
declare -a files=($(echo *.json|sort))
length=$(echo ${#files[@]})
for ((i=0;i<length;i++))
do
for ((j=0;j<=3;j++))
do
[ "${files[i]}" == "${files[i+j]}" ] && continue
[ "$((i+j))" -ge "$length" ] && continue
echo ${files[i]} ${files[i+j]}
#grep -w -Ff ${files[i]} -v ${files[i+j]} > ${temp}
#mv ${temp} ${files[i+j]}
done
done
Eu só echo
da saída aqui, se você acha que está funcionando bem, remova os comentários.