¿Es posible crear un globo que coincida con los archivos del directorio actual y todos los subdirectorios?
Pregunta
Para esta estructura de directorio:
.
|-- README.txt
|-- firstlevel.rb
`-- lib
|-- models
| |-- foo
| | `-- fourthlevel.rb
| `-- thirdlevel.rb
`-- secondlevel.rb
3 directories, 5 files
El globo coincidiría:
firstlevel.rb
lib/secondlevel.rb
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
Solución
Disculpas si no entendí el verdadero punto de la pregunta, pero si estuviera usando sh/bash/etc., entonces probablemente usaría encontrar para hacer el trabajo:
find . -name '*.rb' -type f
Los globos pueden volverse un poco desagradables cuando se usan desde dentro de un script y encontrar es mucho más flexible.
Otros consejos
En zsh, **/*.rb
obras
En el propio Ruby:
Dir.glob('**/*.rb') perhaps?
Parece que no se puede hacer desde bash
Si estas usando zsh
entonces
ls **/*.rb
producirá el resultado correcto.
De lo contrario, puedes secuestrar el ruby
intérprete (y probablemente de otros idiomas)
ruby -e "puts Dir.glob('**/*.rb')"
Gracias a Chris y Gaius por sus respuestas.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow