我有一个目录结构,例如:
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”一起使用。但是还有另一种方式吗?
答案 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