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

tonysh · 2014年08月19日 · 最后由 tonysh 回复于 2014年08月21日 · 2390 次阅读

下面两个文件: /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
需要 登录 后方可回复, 如果你还没有账号请 注册新账号