ワイルドカードにマッチするパスの一覧を取得する
Dir.glob
を使えばシェル風のワイルドカードにマッチしたパスの一覧を取得することができる。Dir.glob
で指定できるワイルドカードには以下がある。
ワイルドカード | 意味 |
---|---|
* | 任意の文字列 |
? | 任意の1文字 |
[] | 括弧内のいずれかの文字 |
{} | 括弧内の文字の組み合わせ(*) |
**/ | ワイルドカード*/の0回以上の繰り返し |
(*) foo{a,b,c}はfooa, foob, foocに展開される
Dir.glob
の第1引数には文字列または文字列の配列をとりパスのパターンを複数指定することができる。第2引数にはFile.fnmatch
と同様のフラグが指定して、マッチの挙動を変えることができる。以下にDir.glob
を使った例を示す。
Dir.glob("*.rb") # カレントディレクトリ以下の.rbファイルの一覧 Dir.glob("*.?") # カレントディレクトリ以下の拡張子が1文字のファイルの一覧 Dir.glob("*.[ch]") # カレントディレクトリ以下のCファイルとヘッダファイルの一覧 Dir.glob("*.{htm,html}") # カレントディレクトリ以下のHTMLファイルの一覧 Dir.glob("**/*") # カレントディレクトリ以下のすべてのファイルとディレクトリの一覧(再帰的) Dir.glob("**/") # カレントディレクトリ以下のすべてのディレクトリの一覧(再帰的)