在 Dir.chdir - ruby 中使用通配符?
Using wildcards in Dir.chdir - ruby?
我有一个目录结构,例如这样:
+SOURCE_CODE
+ MODULE_A
-myfile.txt
+ MODULE_B
-myfile.txt
+ MODULE_C
-myfile.txt
现在我想对每个目录(MODULE_A、MODULE_B)执行 "Dir.chdir",然后打开 "myfile.txt",然后在其中操作字符串在这些文件中。它应该是这样的:
Dir.chdir "../SOURCE_CODE/MODULE_*/"
File.open("myfile.txt") do |f|
f.each_line do |line|
......
我知道,"Dir.chdir" 不能使用通配符。但是还有其他方法吗?
可以使用Pathname
class遍历目录结构
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
您可以在 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
的绝对路径才能使 Dir.chdir
正常工作;我不确定。 File.expand_path
这很方便。
我有一个目录结构,例如这样:
+SOURCE_CODE
+ MODULE_A
-myfile.txt
+ MODULE_B
-myfile.txt
+ MODULE_C
-myfile.txt
现在我想对每个目录(MODULE_A、MODULE_B)执行 "Dir.chdir",然后打开 "myfile.txt",然后在其中操作字符串在这些文件中。它应该是这样的:
Dir.chdir "../SOURCE_CODE/MODULE_*/"
File.open("myfile.txt") do |f|
f.each_line do |line|
......
我知道,"Dir.chdir" 不能使用通配符。但是还有其他方法吗?
可以使用Pathname
class遍历目录结构
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
您可以在 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
的绝对路径才能使 Dir.chdir
正常工作;我不确定。 File.expand_path
这很方便。