Se o seu find suportar -execdir e -printf :
find . -name a.txt -execdir [ ! -e b.txt ] \; -printf %h\n
procurará arquivos com o nome a.txt , verifique se eles têm um arquivo de b.txt de irmão e, se eles não exibirem o nome do diretório de conteúdo.
Sem -execdir ou -printf :
find . -name a.txt -exec sh -c '
for file do
dir=${file%/*}
[ -e "$dir/b.txt" ] || printf "%s\n" "$dir"
done' sh {} +
Também é mais eficiente porque não executa um comando por arquivo.