A resposta mais óbvia é apenas usar o comando diff e provavelmente é uma boa idéia adicionar o parâmetro --speed-large-files a ele.
diff --speed-large-files a.file b.file
Você menciona arquivos não classificados, então talvez seja necessário primeiro classificar os arquivos
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
você pode salvar a criação de um arquivo de saída extra canalizando a saída de 2ª ordem diretamente para diff
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
Obviamente, estes funcionarão melhor em um sistema com muita memória disponível e você provavelmente precisará de muito espaço livre em disco também.
Não ficou claro pela sua pergunta se você já tentou isso antes. Se sim, então seria útil saber o que deu errado (demorou demais, etc.). Eu sempre achei que os comandos stock sort e diff tendem a fazer, no mínimo, comandos customizados, a menos que Existem algumas propriedades muito específicas do domínio dos arquivos que tornam possível faça as coisas de maneira diferente.