18

我正在尝试测试从代码生成的文件的内容。问题是文件的全名是基于时间戳的abc123_#{d.strftime('%Y%m%d%I%M%S')}.log

我怎样才能File找到这个文件并阅读它?我尝试File.exists?()使用正则表达式作为参数,但没有奏效。

我在stackoverflow的另一个问题中发现了这一点:

File.basename(file_path).match(/_.*(css|scss|sass)/)

在文件位于我的public文件夹中的情况下,我将如何使用它?

回答

所以下面的两个答案都有效,我使用了它们的组合。

Dir['public/*.log'].select { |f| f =~ /purge_cc_website/}

*充当通配符,它​​本身就是一种正则表达式。之后,您使用实际的正则表达式过滤数组。

4

2 回答 2

26

Dir[]需要一个文件 glob,因此,如果您的模式不是太复杂,您可以这样做:

Dir['public/abc123_*.log']

更多全局信息在这里

于 2013-06-11T20:39:22.207 回答
19

File用于读取一个文件。您需要使用Dir按名称查找文件。

files = Dir['*'].select {|x| x =~ /_.*(css|scss|sass)/ }

如果您只想要 dups 的最后一个文件:

files = Dir['*'].select {|x| x =~ /_.*(css|scss|sass)/ }.sort.last
于 2013-06-11T20:29:11.247 回答