Ruby在搜索中排除目录和/或文件

时间:2015-01-10 02:20:59

标签: ruby

我正在尝试查找与某个文件扩展名匹配的目录和所有子目录中的所有文件,但忽略与“忽略”的任何元素匹配的文件。阵列。

示例:

ignore = ['test.conf', 'another.conf']

文件' test.conf'和' another.conf'应该被忽略。

到目前为止,我有这个:

Find.find('./').select { |x|
  x.match('.*\.conf$')  # => only files ending in .conf
}.reject { |x|
  # code to reject any files which match any elements from 'ignore'
}

我知道我可以这样做:

Find.find('./').select { |x|
  x.match('.*\.conf')
}.reject { |x|
  x.match('test.conf|another.conf')
}

但是,请考虑具有大量文件的数组,并且不想写出所有文件(如上所述)

帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

您应该使用的是-

matches - ignore

为了您的目的,获得匹配的更好方法是Dir.glob。所以整个代码应该是

Dir.glob("**/*.conf") - ignore