Eu usaria find
e alguns shenanigans:
Vamos dizer que os dois caminhos são / ae / b:
find /a/ /b/ -exec basename \{} \; | sort | uniq -u
Portanto, "localize todos os arquivos em / a e / b e exiba seus nomes básicos (ou seja, o caminho removido), classifique-os e, em seguida, emita quaisquer valores exclusivos na lista".
Se você quiser encontrar onde esses arquivos estão nos diretórios, podemos agrupar tudo e encontrá-los:
for i in 'find /a/ /b/ -exec basename \{} \; | sort | uniq -u'; do find /a/ /b/ -name $i; done