Diğerlerinin söylediği gibi, Dir::foreach
burada iyi bir seçenektir. Ancak, not olduğunu Dir::foreach
ve Dir::entries
her zaman yer alacak .
ve ..
(mevcut ve üst dizinleri). Genellikle üzerinde çalışmak istemezsiniz, bu nedenle Dir::each_child
veya 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::foreach
ve Dir::entries
( Dir::each_child
veDir::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::glob
basit 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.foreach
bir dizinin içeriğini yinelemek için çalışır, bu yüzden başka bir şey oluyor.