È possibile creare un glob che corrisponda ai file nella directory corrente e in tutte le sottodirectory?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Per questa struttura di directory:

.
|-- README.txt
|-- firstlevel.rb
`-- lib
    |-- models
    |   |-- foo
    |   |   `-- fourthlevel.rb
    |   `-- thirdlevel.rb
    `-- secondlevel.rb

3 directories, 5 files

Il glob corrisponderebbe:

firstlevel.rb 
lib/secondlevel.rb 
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
È stato utile?

Soluzione

Mi scuso se non ho colto il vero punto della domanda ma, se stessi usando sh/bash/etc., probabilmente userei Trovare per fare il lavoro:

find . -name '*.rb' -type f

I globi possono diventare un po' sgradevoli se usati all'interno di uno script e Trovare è molto più flessibile.

Altri suggerimenti

In zsh, **/*.rb lavori

Nello stesso Ruby:

Dir.glob('**/*.rb') perhaps?

Sembra che non sia possibile farlo da bash

Se usi zsh Poi

ls **/*.rb

produrrà il risultato corretto.

Altrimenti puoi dirottare il file ruby interprete (e probabilmente quelli di altre lingue)

ruby -e "puts Dir.glob('**/*.rb')"

Grazie a Chris e Gaius per le vostre risposte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top