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