bash – ¿Glob recursivo?

Pregunta:

Me gustaría escribir algo como esto:

$ ls **.py

para obtener todos los nombres de archivo .py, recorriendo recursivamente una jerarquía de directorios.

Incluso si hay archivos .py para encontrar, el shell (bash) da esta salida:

ls: cannot access **.py: No such file or directory

¿Alguna forma de hacer lo que quiero?

EDITAR: Me gustaría especificar que no estoy interesado en el caso específico de ls , pero la pregunta es sobre la sintaxis glob.

Respuesta:

Para hacer globos recursivos en bash, necesita la función globstar de bash versión 4 o superior.

Desde la página de manual de 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.

Para su patrón de ejemplo:

shopt -s globstar
ls -d -- **/*.py

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım