Talvez você esteja procurando a opção -path :
find / -path "*/dirname/filename.extension"
O problema no seu comando é o joker * depois que o pipe | expende para a lista de arquivos no diretório atual, então o comando find irá procurar dentro deles. Outra maneira seria usar a opção -exec , {} será substituída pelo que a primeira descoberta encontrar (mas, por que as coisas são assim?):
find / -type d -name "dirname" -exec find {} -type f -name "filename.extension" \;