Como han dicho otros, Dir.foreach
es una buena opción aquí. Sin embargo, tenga en cuenta que Dir.entries
y Dir.foreach
siempre mostrarán .
y ..
(los directorios actuales y principales). En general, usted no va a querer trabajar en ellos, por lo que puede hacer algo como esto:
Dir.foreach('/path/to/dir') do |item|
next if item == '.' or item == '..'
# do work on real items
end
Dir.foreach
y Dir.entries
también muestran todos los elementos del directorio - ocultos y no ocultos por igual. A menudo, esto es lo que desea, pero si no lo es, debe hacer algo para omitir los archivos y directorios ocultos.
Alternativamente, es posible que desee ver en Dir.glob
que proporciona sencilla coincidencia de comodines:
Dir.glob('/path/to/dir/*.rb') do |rb_file|
# do work on files ending in .rb in the desired directory
end
¿Puede especificar qué sucedió cuando intentó que funcionara? ¿Qué código exacto probaste (o el fragmento relevante, si es largo)? ¿Qué mensajes de error obtuviste? 'Dir.foreach' funciona para iterar sobre los contenidos de un directorio, por lo que algo más está sucediendo. – Telemachus
Si solo desea archivos dentro de su directorio, no olvide probar los archivos al iterar sobre el contenido del directorio: 'do_something_with (entrada) if File.file? (Entrada)' –
Use ''img/*. {Jpg, png, gif, jpeg} ''para tomar múltiples extensiones. –