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?

¿Fue útil?

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?)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top