我如何在ruby中写一个循环,以便我可以在每个文件上执行一个代码块?

我是ruby的新手,我已经得出结论,做到这一点的方法是一个do each循环。 ruby文件将在不同于我想要循环的目录的目录中执行。

我已经试过了。foreach,我不能让它工作。


当前回答

Dir.foreach("/home/mydir") do |fname|
  puts fname
end

其他回答

跳过。& . .,您可以使用Dir::each_child。

Dir.each_child('/path/to/dir') do |filename|
  puts filename
end

Dir::children返回一个文件名数组。

find库是专门为这个任务设计的: https://ruby-doc.org/stdlib-2.5.1/libdoc/find/rdoc/Find.html

require 'find'
Find.find(path) do |file|
  # process
end

这是一个标准的ruby库,所以应该是可用的

Dir.foreach("/home/mydir") do |fname|
  puts fname
end
Dir.new('/my/dir').each do |name|
  ...
end

Dir也有更短的语法,从目录中获取所有文件的数组:

Dir['dir/to/files/*'].each do |fname|
    # do something with fname
end