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 este resultado:
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 global.
Respuesta aceptada:
Para hacer globos recursivos en bash, necesitas el globstar
característica 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