Para executar find em seu próprio resultado, você pode usar o argumento -c para sh (ou bash ) para evitar que o comando outer find trate a parte interna {} especialmente. No entanto, você precisa passar o resultado da descoberta externa como um argumento para sh , que pode ser expandido com $0 :
find . -type d -name "*.data" \
-exec sh -c 'find "$0" -type f -name "*.important.txt" -exec echo \{\} \;' \{\} \;
Nota: $0 deve ser cotado ( "$0" ) para evitar problemas com nomes de diretório que contenham espaços em branco.
Esta não é realmente uma solução "recursiva", porque não permite aninhamento arbitrariamente profundo sem algum escape, mas suporta os dois níveis de find -exec s solicitados no seu exemplo.
Se o seu exemplo é semelhante ao seu problema real, você também pode experimentar o argumento -path para encontrar:
find . -path '*.data/*important.txt'