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.