Les globs récursifs permettent de trouver des fichiers dans des sous-répertoires récursivement.
Supposons que l’on a une arborescence de fichiers comme suit :
$ tree
.
├── test
│ ├── test
│ │ └── test.go
│ └── test.go
└── test.go
Si l’on souhaite lister tous les fichiers ayant l’extension .go, il nous faut taper :
$ find . -name "*.go"
./test/test/test.go
./test/test.go
./test.go
On peut les lister plus simplement à l’aide d’un glob récursif, la séquence **
indiquant un nombre quelconque de sous-répertoires, comme suit :
$ ls **/*.go
test.go test/test.go test/test/test.go
Par défaut les globs récursifs sont désactivés dans le bash :
$ shopt globstar
globstar off
$ ls **/*.go
test/test.go
On peut les activer avec la commande suivante :
$ shopt -s globstar
$ ls **/*.go
test.go test/test.go test/test/test.go
On peut désactiver l’option avec la commande shopt -u globstar
.
Enjoy!