GNU/Linux >> Linux Esercitazione >  >> Linux

Globo ricorsivo?

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

Linux
  1. Umount ricorsivo dopo il montaggio Rbind?

  2. Espansione di una variabile shell ed effetto di glob e split su di essa?

  3. Prova la ricerca ricorsiva di Sed e sostituisci prima di correre?

  4. Ignora maiuscole e minuscole in glob() su Linux

  5. In esecuzione per i comandi del terminale loop in Jupyter

Scarica le dipendenze ricorsive di un pacchetto in Ubuntu

Come limitare la profondità dell'"albero" per l'elenco di file ricorsivi

Gestisci le autorizzazioni di directory e file con chmod Recursive

Costruire parser di discese ricorsive:la guida definitiva

Glob senza distinzione tra maiuscole e minuscole su zsh/bash

wget ricorsivo limitato ai figli del percorso URL