Начиная с Bash 4 (также включая zsh) была добавлена новая опция globbing ( globstar), которая обрабатывает шаблон по- **разному, когда он установлен.
Он сопоставляется с шаблоном подстановки и возвращает имена файлов и каталогов, которые затем соответствуют, заменяя шаблон подстановки в команде соответствующими элементами.
Обычно при использовании **он работает аналогично *, но рекурсивно рекурсивно обращается ко всем каталогам (например, цикл).
Чтобы увидеть, включен ли он, проверьте его с помощью shopt globstar(в сценариях используйте shopt -q globstar).
Этот пример **.pyбудет работать только для текущего каталога, так как он не возвращает список каталогов, которые могут быть рекурсивными, поэтому вам нужно использовать несколько подстановочных знаков уровня каталога **/*.py, чтобы он мог идти глубже.
Пожалуйста, найдите на SO несколько синтаксических тестов, которые я сделал для рекурсивного поиска всех файлов.
nullglob