Ruby 2.2.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*", "b*"]) # => ["foo", "bar"]
p Dir["f*", "b*"] # => ["foo", "bar"]
p Dir.glob("f*\0b*") # => ["foo", "bar"]
# ワイルドカードの例
Dir.glob("*") #=> ["foo", "bar"]
Dir.glob("fo?") #=> ["foo"]
Dir.glob("[^f]*") #=> ["bar"]
Dir.glob("{b,f}*") #=> ["bar", "foo"]