¿Es posible crear un globo que coincida con los archivos del directorio actual y todos los subdirectorios?

StackOverflow https://stackoverflow.com/questions/44481

  •  09-06-2019
  •  | 
  •  

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
¿Fue útil?

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
scroll top