Vorrei scrivere qualcosa del genere:
$ ls **.py
per ottenere tutti i nomi di file .py, percorrendo in modo ricorsivo una gerarchia di directory.
Anche se ci sono file .py da trovare, la shell (bash) fornisce questo output:
ls: cannot access **.py: No such file or directory
Un modo per fare quello che voglio?
MODIFICA: Preciso che non mi interessa il caso specifico di ls
, ma la domanda riguarda la sintassi glob.
Risposta accettata:
Per fare glob ricorsivi in bash, hai bisogno di globstar
funzionalità da bash versione 4 o successiva.
Dalla manpage di bash:
globstar
If set, the pattern ** used in a pathname expansion context will
match all files and zero or more directories and subdirectories.
If the pattern is followed by a /, only directories and
subdirectories match.
Per il tuo modello di esempio:
shopt -s globstar
ls -d -- **/*.py