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.