如果我想獲得的所有的CSS和JavaScript文件如何執行Dir.glob但排除目錄?
Dir.glob("dir/**/*.{css,js})
給我的東西,我不想,如果有一個名爲stupidfolder.js
文件夾。我只是改變文件夾的名稱,但我不能。
如果我想獲得的所有的CSS和JavaScript文件如何執行Dir.glob但排除目錄?
Dir.glob("dir/**/*.{css,js})
給我的東西,我不想,如果有一個名爲stupidfolder.js
文件夾。我只是改變文件夾的名稱,但我不能。
你不能這樣做,Dir.glob
。您必須明確拒絕這些條目。
only_files = Dir.glob('*').reject do |path|
File.directory?(path)
end
您可以Dir.entries
Dir.entries('../directoryname').reject { |f| File.directory?(f) }
做這可能是你的問題有點誇張,但rake
定義一個類FileList
。你可以用這個類替換Dir.glob
:
require 'rake'
filelist = FileList.new("dir/**/*.{css,js}")
filelist.exclude('**/stupidfolder.js')
filelist.each do |file|
#...
end
這是一個迂迴的方式來達到相同的點。 –
我喜歡這個答案,因爲它的Rakefile應該能夠做到。只是一個替代答案,而不是一個圓的答案。 – Pred
你不解釋你想要做什麼,但它似乎要淪落成尋找特定文件的目錄。而且,如果是這樣,Ruby的[Find](http://ruby-doc.org/stdlib-2.2.3/libdoc/find/rdoc/Find.html)類是一個很好的工具。它的啓動速度更快,並且比使用'Dir.glob'更具可擴展性,它將首先遍歷層次結構,收集列表,然後返回所有發現的數組。 Find的文檔顯示瞭如何修剪目錄。 –
是的,我想下降到一個目錄,以獲得所有的.css和.js文件的路徑,但碰巧有一些壞的文件夾名稱以.js結尾,所以我想這些被排除在外。我不知道Find,所以我會檢查一下。 – kayla
無論名稱如何,刪除文件夾都是一個小步驟。 'File.directory?('path/to/folder_or_file')'會告訴你。同樣,文檔特別演示瞭如何做到這一點。 –