他の人が言ったように、Dir::foreach
ここは良いオプションです。ただし、Dir::foreach
andに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::foreach
and 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
ディレクトリの内容を反復処理するように機能するので、他の多くのことが起こっています。