新手问题 读取匹配正则的文件

tonysh · August 19, 2014 · Last by tonysh replied at August 21, 2014 · 2379 hits

下面两个文件: /sys/class/fc_host/host8/port_name /sys/class/fc_host/host9/port_name 通过正则 工具 /^\/sys\/class\/fc_host\/host(\d)\/port_name/ 可以匹配到。

使用 File.readlines("/^\/sys\/class\/fc_host\/host(\d)\/port_name/").to_a.last 出现错误。 Errno::ENOENT: No such file or directory - /^/sys/class/fc_host/host(d)/port_name/ from (irb):19:in `readlines' from (irb):19 from :0 该是怎么正确读取文件?

我 x,新手问题就没有人回答了

一个正则表达式放在双引号里?再当成 readlines 的参数?

fs=Dir.glob *
fs.each do |fn|
  if /xxx/ =~ fn
    ...
  end
end

就像楼上说的,文件系统不支持正则表达式筛选文件,只支持 * 这样的通配方式,找到文件名再用正则匹配好了

Dir.glob '/sys/class/fc_host/host*/port_name' do |fname|
  if fname =~ /host\d/
    File.readlines(fname).to_a.last
  end
end
You need to Sign in before reply, if you don't have an account, please Sign up first.