他の人が言ったように、Dir::foreachここは良いオプションです。ただし、Dir::foreachandにDir::entriesは常に.and ..(現在のディレクトリと親ディレクトリ)が含まれることに注意してください。通常はそれらに取り組みたくないので、Dir::each_childまたはDir::children(ma11hew28で提案されているように)または次のように使用できます。
Dir.foreach('/path/to/dir') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
end
Dir::foreachand Dir::entries(Dir::each_childおよびand Dir::children)には隠しファイルとディレクトリも含まれます。多くの場合、これで十分ですが、そうでない場合は、スキップして何かを行う必要があります。
または、Dir::glob単純なワイルドカード一致を提供するを調べたい場合があります。
Dir.glob('/path/to/dir/*.rb') do |rb_filename|
# Do work on files & directories ending in .rb
end
Dir.foreachディレクトリの内容を反復処理するように機能するので、他の多くのことが起こっています。