Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Dirクラス > []
self[*pattern] -> [String][permalink][rdoc]glob(pattern, flags = 0) -> [String]glob(pattern, flags = 0) {|file| ...} -> nilワイルドカードの展開を行い、 パターンにマッチするファイル名を文字列の配列として返します。 パターンにマッチするファイルがない場合は空の配列を返します。
ブロックが与えられたときはワイルドカードにマッチしたファイルを 引数にそのブロックを 1 つずつ評価して nil を返します
  Dir.glob("*")                      #=> ["bar", "foo"]
  Dir.glob("*", File::FNM_DOTMATCH)  #=> [".", "..", "bar", "foo"]
ワイルドカードには以下のものがあります。これらはバックスラッシュに よりエスケープすることができます。ダブルクォートの文字列中では 2 重にエスケープする必要があることに注意してください。 ワイルドカードはデフォルトではファイル名の先頭の "." にマッチしません。
空文字列を含む任意の文字列と一致します。
任意の一文字と一致します。
鈎括弧内のいずれかの文字と一致します。- でつな がれた文字は範囲を表します。鈎括弧の中の最初の文字が ^ である時には含まれない文字と一致します。 ^ の代わりに ksh や POSIX shell のように ! も同じ意 味で使えます。
コンマで区切られた文字列の組合せに展開します。例えば、 foo{a,b,c} は fooa, foob, fooc に展開されそれぞれに対してマッチ判定を行います。
括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は foo, barfoo, barbar のそれぞれにマッチします。
ワイルドカード */ の0回以上の繰り返しを意味し、 ディレクトリを再帰的にたどってマッチを行います。 例えば, foo/**/bar は foo/bar, foo/*/bar, foo/*/*/bar ... (以下無限に続く)に対してそれぞれ マッチ判定を行います。
例:
# 一般的な例
p Dir.glob("*")          #=> ["foo", "bar", "baz"]
p Dir.glob("./b*")       #=> ["./bar", "./baz"]      先頭に "./" が付いている。
p Dir.glob("*/")         #=> ["foo/"]                ディレクトリのみにマッチする。
p Dir.glob("wrong_name") #=> []                      マッチしないと空の配列を返す。
Dir.glob("b*") {|f| p f }
#=> "bar"
    "baz"
# 複数のパターンを指定する例
p Dir.glob("f*\0b*")     # => ["foo", "bar"]
p Dir.glob(["f*", "b*"]) # => ["foo", "bar"]
p Dir["f*", "b*"]        # => ["foo", "bar"]
# ワイルドカードの例
Dir.glob("*")            #=> ["foo", "bar"]
Dir.glob("fo?")          #=> ["foo"]
Dir.glob("[^f]*")        #=> ["bar"]
Dir.glob("{b,f}*")       #=> ["bar", "foo"]