2012-09-03 9 views
10

Suponiendo una estructura de directorios de:de Ruby 1.9.3 Dir.glob extraño comportamiento partido recursiva

a/b/c/d/e/f/g/h 

Estoy tratando de encontrar 'h' a través de:

Dir.glob('a/**/f/g/h') 

Sin embargo esto no está funcionando. ¿Algunas ideas?

puedes probar el caso de prueba a continuación:

$ /usr/bin/ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 
$ mkdir -p a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/*')" 
a/b 
a/b/c 
a/b/c/d 
a/b/c/d/e 
a/b/c/d/e/f 
a/b/c/d/e/f/g 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/h')" 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/g/h')" 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/f/g/h')" 
**nothing** 
+3

Cuanto más cavar en esto, más creo que puede ser un error digno de mención aguas arriba. Parece que la coincidencia falla cada vez que hay más de dos elementos de ruta final. Mi respuesta a continuación aborda el comportamiento actual, pero probablemente * es * un error en Dir # glob, ya que File # fnmatch funciona correctamente. –

+0

Creo que es un error también. En REE 1.8.7, el último comando ha resultado como se esperaba. –

+0

Enlace de informe de error: http://bugs.ruby-lang.org/issues/6977 –

Respuesta