#11160 pero como es para un tema personal, no tengo prisa y, que me gusta buscar soluciones por mi mismo, salvo que esté atascado, que entonces sí pido ayuda, prefiero currármelo yo.
#11159 Me explico ahora que estoy al PC xD
ls -1R directorioN1/*.foo
Esto no debe listar nada ya que directorioN1/*.foo no es un directorio, estás mezclando una búsqueda con una ruta a la hora de listar lo que hay dentro, no se si me explico.
Si haces
ls -1R directorioN1/example.foo
existiendo example.foo te mostrará ese archivo
Lo del find lo que te comento es que hay bastantes parámetros, y creo recordar que hay uno para desactivar las recursividad a parte de los niveles de esta (en #11158 lo he dicho justo al revés)
#11157 sin mirar ChatGPT diría que es una limitación de la "expansión de nombre de archivos" (globbing). Los carácter comodín como * y ? son tratados por bash (o el shell que uses) y el resultado va al comando. El comando "ls" no recibe la expresión "*.foo", recibe el resultado de expandir esa expresión.
Suceden "problemas" similares cuando intentas ejecutar comandos con sudo y metes algo que requiere "gobbling", al no pasar por el terminal shell (o no al menos por uno "normal" con todas las funcionalidades y variables de entorno), no se produce la expansión de nombres de fichero y no funciona como esperas.
Conclusión a tu problema: ls puede hacer listado recursivo, pero realmente no es el que aplica filtros cuando usas caracteres comodín, eso sucede "fuera" de ls y lo hace el shell.
Por añadir una "prueba de concepto" :
- crea un directorio con nombre "directorio.foo"
- crea algunos archivos .foo dentro de "directorio.foo/"
- ejecuta
ls -R *.foo
- PROFIT!
#11167 doblepost con posible solución (para bash)
https://unix.stackexchange.com/questions/49913/recursive-glob
#11168 con ese formato no funciona si le digo el directorio donde buscar, tendría que meterme dentro del directorio, no es recursivo, es decir si lo hago desde fuera de DirectorioN1, sólo muestra ficheros si están en ese mismo nivel, pero no si están en DirectorioN1.1, N1.2 o N1.3, tampoco funciona si pongo el parámetro R.
#11169 Lo acabo de probar y funciona, pero tienes que seguir las instrucciones que ponen en el enlace:
Primero verifica que tienes activado globstar, si tras ejecutar:
$ shopt globstar
Te devuelve:
globstar off
Entonces ejecuta:
$ shopt -s globstar
Y ya te mostrará globstar on
.
Entonces ya puedes usar el comando ls:
$ ls -R **/*.foo
o
$ ls -d -- **/*.foo
Ambas me devuelven los mismos resultados.
Aun así yo prefiero quedarme con el comando find
, pero si necesitas si o si que sea con ls
ahí lo tienes.
#11170 lo hice y funcionó así tal cual, en mi respuesta comentaba que no funciona si le dices el directorio a buscar, que es lo que me interesa, eje.:
ls -R DirectorioN1/*.foo
No quiero el resultado de todos los directorios, tal como comentas, al final el resultado que me sirve es el de find, con tree no lo probé, no lo tengo instalado y me da pereza hacerlo.