find
funcionará como mágica para você.
find -name datafile.dat -execdir ~/a.py '{}' \;
O find pesquisa recursivamente em todos os subdiretórios os arquivos que correspondem a um conjunto de regras e executa uma ação neles.
A regra -name permite que você encontre arquivos com um nome que corresponda ao que você der. Você pode usar globbing, por exemplo, "* .dat" encontraria todos os arquivos .dat.
Se necessário, você pode usar -regex ao invés de -name para combinar com um padrão regex em vez de um padrão glob, então você pode fazer ". * \. dat $" para combinar com todos os arquivos .dat.
O comando -execdir executará qualquer comando que você der a partir do diretório do arquivo encontrado, substituindo "{}" pelo arquivo encontrado.