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

big*_*ato 14 ruby-on-rails

我试图测试从代码生成的文件的内容.问题是文件的全名基于时间戳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/}

*作为通配符是那种本身就是一个正则表达式.之后,您使用实际的正则表达式过滤数组.

Bob*_*ski 22

Dir[] 接受一个文件全局,如果你的模式不是太复杂,你可以这样做:

Dir['public/abc123_*.log']
Run Code Online (Sandbox Code Playgroud)

更多水珠信息在这里.


Bra*_*ncy 14

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

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

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

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