O fragmento $(basename {})
é analisado pelo seu shell antes de find
ser executado. O resultado é {}
. É por isso que os dois comandos são os mesmos.
Para que funcione como você queria, você pode gerar outro shell que manipulará $()
sozinho. Citar com ''
impede que o shell externo processe $()
:
find -name "*pdf" -exec sh -c 'echo $(basename {})' \;