在Dir.chdir中使用通配符 - ruby​​?

时间:2015-12-08 12:45:14

标签: ruby-on-rails ruby rake chdir

我有一个目录结构,例如:

  Dir.chdir "../SOURCE_CODE/MODULE_*/"
  File.open("myfile.txt") do |f|
    f.each_line do |line|
      ......

现在我想在每个目录(MODULE_A,MODULE_B)中执行“Dir.chdir”,然后打开“myfile.txt”,我将操作这些文件中的字符串。它应该是这样的:

{{1}}

我知道,不可能将通配符与“Dir.chdir”一起使用。但是还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

您可以将通配符与Dir.glob

一起使用
Dir.glob("../SOURCE_CODE/MODULE_*/myfile.txt") do |filename|
  File.open(filename) do |f|
    f.each_line do |line|
      # ...
    end
  end
end

你可以在街区内做任何你想做的事情:

Dir.glob("../SOURCE_CODE/MODULE_*/") do |dirname|
  Dir.chdir(dirname)

  File.open("myfile.txt") do |f|
    f.each_line do |line|
      # ...
    end
  end
end

您可能需要提供Dir.glob的{​​{1}}的绝对路径才能按预期工作;我不确定。 Dir.chdir对此非常方便。

答案 1 :(得分:0)

您可以使用Pathname类遍历目录结构

a = Pathname.new('/sourcecode')
a.children.each do |child1|
  child1.children.do |child2|
    if child2.file
       File.open(child2) do |f|
         f.each_line do |line|
         ...
    end 
  end 
end