Obtener subdirectorios inmediatos en ruby
Pregunta
Estoy tratando de escribir un simple script ruby ??que copiará un archivo a los subdirectorios inmediatos de un directorio. ¿Cómo obtendría solo los subdirectorios inmediatos?
Solución
Dir.glob (" ** / " quot)
devolverá una matriz de todas las rutas debajo del directorio actual. Desde allí puede filtrar la lista y copiar un archivo con File.copy (from, to)
Otros consejos
Suponiendo que solo quisiera los subdirectorios inmediato , podría usar Dir ['* /']
(que combina las respuestas de Micheal Sepcot y glenra).
Si quiere encontrar todos los subdirectorios inmediatos (solo un nivel debajo de donde se encuentra), intente esto:
Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}
Es decir: cambiar el directorio en algún lugar, construir una matriz de archivos que se encuentran allí, rechazar los elementos de la matriz que no son directorios y devolver el resultado final seleccionado.
Probablemente la mejor manera de tratar con archivos en Ruby es Pathname
. Combina métodos de clase de unos pocos módulos basados ??en archivos en una clase de POO fácil de usar. Por lo tanto, no necesita pasar el valor a un método como tendría que hacerlo con Dir
o File
, solo puede llamar al método en el objeto en sí.
Aquí se muestra cómo imprimir subdirectorios inmediatos:
require 'pathname'
puts Pathname('some/directory').children.select(&:directory?)