rsync
pode fazer o que você quer com rapidez e facilidade:
rsync --dry-run --verbose --recursive --existing --ignore-existing --delete-after A/ B/
Da ajuda:
--existing skip creating new files on receiver
--ignore-existing skip updating files that already exist on receiver
--delete delete extraneous files from destination dirs
Remova a opção dry-run
depois que você estiver satisfeito com os resultados propostos, para realmente executar as exclusões.
A página man tem uma descrição mais explícita das opções e até menciona o seu caso de uso:
--existing, --ignore-non-existing
This tells rsync to skip creating files (including directories)
that do not exist yet on the destination. If this option is
combined with the --ignore-existing option, no files will be
updated (which can be useful if all you want to do is to delete
extraneous files).
--ignore-existing
This tells rsync to skip updating files that already exist on
the destination (this does not ignore existing directores, or
nothing would get done). See also --existing.