Diğerlerinin söylediği gibi, Dir::foreachburada iyi bir seçenektir. Ancak, not olduğunu Dir::foreachve Dir::entriesher zaman yer alacak .ve ..(mevcut ve üst dizinleri). Genellikle üzerinde çalışmak istemezsiniz, bu nedenle Dir::each_childveya Dir::children( ma11hew28 tarafından önerildiği gibi ) kullanabilir veya böyle bir şey yapabilirsiniz:
Dir.foreach('/path/to/dir') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
end
Dir::foreachve Dir::entries( Dir::each_childveDir::children ) da gizli dosyaları ve dizinleri içerir. Genellikle istediğiniz budur, ancak değilse, atlamak için bir şeyler yapmanız gerekir.
Alternatif olarak, Dir::globbasit joker karakter eşleşmesini sağlayan şunlara bakmak isteyebilirsiniz :
Dir.glob('/path/to/dir/*.rb') do |rb_filename|
# Do work on files & directories ending in .rb
end
Dir.foreachbir dizinin içeriğini yinelemek için çalışır, bu yüzden başka bir şey oluyor.