2015-09-23 9 views
7

私はCSSのすべてのファイルとJavaScriptファイルディレクトリを除外するにはどうすればDir.globを実行できますか?

Dir.glob("dir/**/*.{css,js}) 

は私にstupidfolder.jsという名前のフォルダがあります場合、私はしたくないものを与えて取得したい場合。私はちょうどフォルダの名前を変更するだろうが、私はできません。

+0

、あなたが特定のファイルを探してディレクトリに降りたく表示されます:あなたは、このクラスでDir.globを置き換えることができます。そしてもしそうなら、Rubyの[Find](http://ruby-doc.org/stdlib-2.2.3/libdoc/find/rdoc/Find.html)クラスは素晴らしいツールです。その起動速度は速く、階層を最初に歩く 'Dir.glob'を使うよりもスケーラビリティがあり、リストを集めて見つかったすべての配列を返します。 findのドキュメントでは、ディレクトリを整理する方法を示しています。 –

+0

はい私はすべての.cssファイルと.jsファイルへのパスを取得するためにディレクトリに降下しようとしていますが、.jsで終わるいくつかの悪いフォルダー名が存在するため、これらを除外したいと思います。私はFindについて知りませんでしたので、私はそれを確認します。 – kayla

+0

名前が何であれ、フォルダを除外するのはマイナーなステップです。 'File.directory?( 'path/to/folder_or_file')'があなたに伝えます。ここでも、ドキュメンテーションはそれを行う方法を具体的に示しています。 –

答えて

10

Dir.globで行うことはできません。これらのエントリを明示的に拒否する必要があります。

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

あなたはそれがあなたの問題のために誇張かもしれDir.entries

Dir.entries('../directoryname').reject { |f| File.directory?(f) } 
4

でそれを行うことができますが、rakeは、クラスFileListを定義します。あなたはあなたが何をしようとして説明していない

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

これは、同じポイントに到達するための迂回路です。 –

+0

私はこの答えが好きです。なぜなら、Rakefileができるはずのものだからです。代わりの答えではなく、ラウンドアラウンドの答えです。 – Pred