2014-01-15 26 views
2

我使用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

Logstash File輸入API僅支持globWildcard),作爲Unix外殼支持。例如,如果您使用的glob模式列表中的Unix系統文件,

$ LS [0-9] .csv文件

它可以顯示文件 「1.csv」

但是當你添加的正則表達式,

$ LS [0-9] {1} .csv文件

系統顯示

LS:[0-9] {1}的.csv:沒有這樣的文件或目錄

所以,如果你想添加的正則表達式,也許你需要匹配globbing pattern 。 如

路徑=>「/ EBS/*/* - [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] .csv「

希望這可以幫助你。

+0

工程就像一個魅力! – Vor

2

您可以使用Rake::FileList,它從作業完全符合:

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

應該做的工作適合你

+0

這是有道理的。但爲此,我假設我需要修改源代碼並重新編譯代碼。這在我的情況中並不是真正的選擇。我正在尋找一些logstash特定的解決方案。 – Vor

+0

@Vor重新編譯ruby代碼? Ruby被解釋並且沒有被編譯 – bjhaid

+0

抱歉缺少信息。 'logstash'寫在'JRuby'中 – Vor

相關問題