ruby - 使用 glob 模式查找某些文件

标签 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" 

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

最佳答案

Logstash File输入api仅支持glob ( Wildcard ),作为 Unix shell 支持。例如,如果您使用 glob 模式列出 Unix 系统中的文件,

$ ls [0-9].csv

可以显示文件“1.csv”

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

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

系统显示

ls: [0-9]{1}.csv: No such file or directory

所以,如果你想添加正则表达式,也许你需要匹配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"

希望这可以帮助你。

关于ruby - 使用 glob 模式查找某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141472/

相关文章:

ruby-on-rails - 您如何使用变量在 ruby​​ on rails 中查询 postgres 数组的整数?

ruby-on-rails - 如何在 Ruby 中定义私有(private)方法?

javascript - 转义不适用于 jQuery 选择器的特殊字符

regex - 用于提取多行 LaTeX 章节名称的 Perl 正则表达式

java - 读取文件行的​​正确路径

java - 使用 Java 7 使用文件写入不存在的文件

java - 在 Eclipse 中使用 tomcat Web 应用程序时 user.dir 不正确

ruby - 我的代码中是否存在用于求解 Collat​​z 序列的无限循环?

ruby-on-rails - 带有自定义绑定(bind)的 Savon

php - php preg匹配中的 "*"和 "?"有什么区别?