我如何做Dir.glob但排除目录?

时间:2015-09-23 20:10:31

标签: ruby

如果我想获取所有CSS和JavaScript文件

Dir.glob("dir/**/*.{css,js})
如果有一个名为stupidfolder.js的文件夹,

会给我一些我不想要的东西。我只想更改文件夹的名称,但我不能。

3 个答案:

答案 0 :(得分:11)

Dir.glob无法做到这一点。您必须明确拒绝这些条目。

only_files = Dir.glob('*').reject do |path|
  File.directory?(path)
end

答案 1 :(得分:4)

您可以使用Dir.entries

执行此操作
Dir.entries('../directoryname').reject { |f| File.directory?(f) }

答案 2 :(得分:4)

这可能夸大了您的问题,但rake定义了一个班级FileList。您可以使用此类替换Dir.glob

require 'rake'
filelist = FileList.new("dir/**/*.{css,js}")
filelist.exclude('**/stupidfolder.js')
filelist.each do |file|
   #... 
end