Ruby on rails Ruby:使用正则表达式根据文件名查找并打开文件?

Ruby on rails Ruby:使用正则表达式根据文件名查找并打开文件?,ruby-on-rails,Ruby On Rails,我试图测试由代码生成的文件的内容。问题是文件的全名基于时间戳abc123{d.strftime(“%Y%m%d%I%m%S”)}。log 如何使用文件查找并读取此文件?我尝试使用正则表达式作为参数执行File.exists?(),但没有成功 我在stackoverflow的另一个问题中发现了这一点: File.basename(文件路径).match(/|.*(css | scss | sass)/) 如果文件位于我的public文件夹中,我将如何使用它 回答 所以下面的两个答案都有效,我将它们

我试图测试由代码生成的文件的内容。问题是文件的全名基于时间戳
abc123{d.strftime(“%Y%m%d%I%m%S”)}。log

如何使用
文件
查找并读取此文件?我尝试使用正则表达式作为参数执行
File.exists?()
,但没有成功

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

File.basename(文件路径).match(/|.*(css | scss | sass)/)

如果文件位于我的
public
文件夹中,我将如何使用它

回答

所以下面的两个答案都有效,我将它们结合起来使用

Dir['public/*.log']。选择{f | f=~/purge\u cc\u网站/}


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

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

files = Dir['*'].select {|x| x =~ /_.*(css|scss|sass)/ }
如果您只需要DUP中的最后一个文件:

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

Dir[]
接受一个文件glob,因此,如果您的模式不太复杂,您可以执行以下操作:

Dir['public/abc123_*.log']

更多全球信息。

可能会稍微快一点,因为它不包含正则表达式。