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

atk*_*yla 8 ruby

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

Dir.glob("dir/**/*.{css,js})
Run Code Online (Sandbox Code Playgroud)

给我一些我不想要的东西,如果有一个名为的文件夹stupidfolder.js.我只想更改文件夹的名称,但我不能.

mea*_*gar 11

你不能这样做Dir.glob.您必须明确拒绝这些条目.

only_files = Dir.glob('*').reject do |path|
  File.directory?(path)
end
Run Code Online (Sandbox Code Playgroud)


knu*_*nut 5

对于您的问题来说,这可能有点夸张,但rake定义了一个 class FileList。你可以Dir.glob用这个类替换:

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