Desde o Bash 4 (incluindo também o zsh) uma nova opção de globbing ( globstar ) foi adicionado, o que trata o padrão ** de maneira diferente quando é definido.
Ele está correspondendo ao padrão curinga e retornando os nomes de arquivos e diretórios correspondentes, substituindo o padrão curinga no comando pelos itens correspondentes.
Normalmente, quando você usa ** , ele funciona de forma semelhante a * , mas recursiva todos os diretórios recursivamente (como um loop).
Para ver se está ativado, confira shopt globstar (no script, use shopt -q globstar ).
O exemplo **.py funcionaria apenas para o diretório atual, pois não retorna a lista de diretórios que podem ser recurses, por isso é necessário usar vários curingas em nível de diretório **/*.py , para que ele possa ir mais profundo.
Por favor encontrar SO alguns testes de sintaxe que fiz para encontrar todos os arquivos de forma recursiva.