1つのディレクトリ内のすべてのファイルを反復処理する 質問する

1つのディレクトリ内のすべてのファイルを反復処理する 質問する

各ファイルでコードブロックを実行できるように、Ruby でループを記述するにはどうすればよいですか?

私は Ruby 初心者ですが、これを行うには do each ループを使用するのがよいという結論に達しました。Ruby
ファイルは、ループするディレクトリとは別のディレクトリから実行されます。

試してみましたDir.foreachが、うまくいきませんでした。

ベストアンサー1

他の人が言ったように、Dir::foreachは良い選択肢です。ただしDir::foreachDir::entries.常におよび(現在のディレクトリと親ディレクトリ)が含まれます..。通常はこれらのディレクトリで作業したくないので、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および(およびもDir::entries同様に) には、隠しファイルと隠しディレクトリも含まれます。多くの場合、これは必要なことですが、そうでない場合は、それらをスキップするために何らかの操作を行う必要があります。Dir::each_childDir::children

あるいは、以下もご覧くださいDir::globシンプルなワイルドカードマッチングを提供します:

Dir.glob('/path/to/dir/*.rb') do |rb_filename|
  # Do work on files & directories ending in .rb
end

おすすめ記事