需要所有子文件夹中的文件,除了一个

时间:2014-10-26 00:30:31

标签: ruby regex

我编写了以下条件来从文件夹及其子文件夹中获取所有*.js个文件。我写了下面的命令来获取列表:

c:/svn/myfolder/**/*.js

"myfolder"中有4个子文件夹a, b, c, d,我想从三个子文件夹中获取.js个文件列表,并跳过检查子文件夹'c'

目前,当我放置.js

时,它会返回所有myfolder/**/*.js个文件

2 个答案:

答案 0 :(得分:2)

Ruby的glob语法借用了正则表达式。您可以使用括号指定一系列字符。

Dir['c:/svn/myfolder/[abd]/*.js']

这将包括a,b和d但不包括c。你也可以否定:

Dir['c:/svn/myfolder/[^c]/*.js']

这将包括除之外的所有内容

有关Ruby globs的更多信息,请参阅http://ruby-doc.org/core-2.1.3/Dir.html#method-c-glob

答案 1 :(得分:0)

您可以使用Dir glob将所有文件和目录作为列表获取。要使用正则表达式来完成此任务,请执行以下操作:

Dir.glob(File.join(['c:/svn/myfolder', '*[^excluded_folder]', '**', '*.js']))

*[^excluded_folder]包含除 excluded_folder 以外的所有内容。

**作为路径的一部分,将从当前目录路径以及所有子目录中获取文件。