Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library _builtin > class Dir > []
self[*pattern] -> [String]
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"]