O shell está interpretando o $(...) antes de executar find . Se você quiser que o shell de busca execute-o, você precisará parar de substituí-lo. Nós podemos fazer isso da seguinte forma:
find ~/ -type f -exec sh -c 'echo $(basename "{}")' \;
A chave aqui são as aspas simples; Bash não vai tocar em nada dentro deles.