find do -execdir parece mais apropriada:
find /path/to/searchdir -name file.rtf -execdir cp -v /path/to/filetocopy.rtf . \;
Isso executará o cp de cada diretório encontrado contendo um arquivo chamado file.rtf , portanto, . , visto por cp , será o diretório apropriado toda vez que cp for executado.
Você pode adicionar -delete para excluir o arquivo (depois de verificar se tudo funciona).
O motivo pelo qual sua abordagem não está funcionando é que o shell avalia dirname {} antes de executar find e dirname {} outputs . . Então
find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" 'dirname {}' \;
torna-se
find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" . \;