O problema é que seu asterisco é interpretado pelo shell ANTES de ser passado para find como argumento.
Ou seja. se você tiver um arquivo como script.sh no diretório de trabalho atual de onde você o encontrou, seu comando irá procurar like this:
#command you type:
find . -name *.sh
#command the shell creates:
find . -name script.sh
Então, no seu caso, é a primeira correspondência para *.sh em a_root_dir , conforme interpretado pelo shell, e seu comando é literalmente:
find . -name run.sh
O que você precisa fazer é usar aspas duras para suprimir o shell que expande o asterisco antes que find seja executado:
find . -name '*.sh'