2009-04-28 18 views
18

Estoy tratando de escribir un simple script de ruby ​​que copiará un index.tpl a index.html en todos los subdirectorios (con algunas excepciones). Pero estoy atascado tratando de obtener la lista de subdirectoriosobtener todos los subdirectorios inmediatos en ruby ​​

+2

Acabas de hacer la misma pregunta sobre python. ¿Por qué escribiría dos scripts en dos idiomas para hacer lo mismo a menos que su tarea? –

+1

porque quería comparar las respuestas de las dos comunidades diferentes. –

+0

esto me parece tarea también !!! haha –

Respuesta

15

Dir.glob("**/") devolverá una matriz de todas las rutas debajo del directorio actual. Desde allí se puede filtrar la lista y copiar un archivo con File.copy(from, to)

10

Si se refiere a encontrar todos los inmediatos subdirectorios (sólo un nivel por debajo de donde se encuentre), intente esto:

Dir.chdir("/some/path/you/want/to/check/below") 
subdir_list=Dir["*"].reject{|o| not File.directory?(o)} 

Eso es : cambie de directorio en algún lugar, construya una matriz de archivos que se encuentran allí, rechace los elementos de la matriz que no son directorios y devuelva la matriz eliminada resultante.

56

Suponiendo que sólo quería los inmediatos subdirectorios, se puede usar Dir['*/'] (que combina las respuestas de Micheal Sepcot y glenra de).

+9

¿qué hay que "asumir"? eso es lo que preguntó en la pregunta! +1 –

+0

Esta respuesta obtiene todos los subdirectorios solo un nivel de profundidad. La respuesta de Michael Sepcot obtendrá TODOS los subdirectorios bajo el actual. – Aaron

+0

@AndrewBullock: cuando se agregó esta respuesta, el OP ya había aceptado una respuesta que no hizo esa suposición. –

Cuestiones relacionadas