使用glob模式查找某些文件

时间:2014-01-15 15:27:48

标签: ruby regex path glob logstash

我正在使用logstash不断查找新文件并将数据流式传输到其他系统。

现在我正在使用此配置:

input {

  file {
    type => "source"
    path => "/ebs/**/*-*csv"  # recursivly check subfolders
    sincedb_path => "/usr/local/logstash/sincedb"
    sincedb_write_interval => 1
    discover_interval => 4
    start_position => "beginning"
    stat_interval => 1
  }
}

它工作正常,但我想做的是这样的:

path => "/ebs/**/*-[0-9]{10}.csv" 

是否可以在路径中包含这样的正则表达式?

2 个答案:

答案 0 :(得分:2)

你可以使用Rake::FileList,它非常适合工作:

require rake
FileList.new("/ebs/**/*-[0-9]{10}.csv")

应该为你做的工作

答案 1 :(得分:2)

Logstash File输入api仅支持globWildcard),因为Unix shell支持。例如,如果使用glob模式在Unix系统中列出文件,

  

$ ls [0-9] .csv

它可以显示文件“1.csv”

但是当你添加正则表达式时,

  

$ ls [0-9] {1} .csv

系统显示

  

ls:[0-9] {1} .csv:没有这样的文件或目录

所以,如果你想添加正则表达式,可能需要匹配globbing pattern。 如

  

path => “/ EBS / * / * - [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0 -9] [0-9] .csv“

希望这可以帮到你。