概要
Dir#glob
詳細
Dir#globは引数で与えたパターンで取得したファイル名の配列を取得します。
エイリアスとしてDir[]がある。
使用出来るメタ文字は以下
メタ文字 | 内容 |
---|---|
* | 任意の文字と一致 |
** | 再帰的にディレクトリを辿る |
? | 任意の一文字と一致 |
[chars] | charsで指定したいずれかの文字と一致 |
{patt, ...} | ブレースで囲まれたパターンのいずれかと一致 |
サンプル
フォルダ構成
│ dir_glob.rb │ dir_glob.yml │ └─test1 │ test1.txt │ └─test2 test2.txt
コード
# encoding: utf-8 require "pp" # カレント配下の全ファイルを取得 p Dir.glob "*" p Dir["*"] # カレント配下の全ファイル、フォルダを取得 p Dir.glob "**/*" p Dir["**/*"] # カレント配下の全ファイル、フォルダのうちtestとつくものを取得 p Dir.glob "**/test*" p Dir["**/test*"] # 3文字の拡張子のdir_globを取得 p Dir.glob "dir_glob.???" p Dir["dir_glob.???"] # dかtで始まる拡張子付きのファイルを再帰的に取得 p Dir.glob "**/[dt]*.*" p Dir["**/[dt]*.*"] # 拡張子がrbかtxtのファイルを再帰的に取得 p Dir.glob "**/*.{rb,txt}" p Dir["**/*.{rb,txt}"]
出力
["dir_glob.rb", "dir_glob.yml", "test1"] ["dir_glob.rb", "dir_glob.yml", "test1"] ["dir_glob.rb", "dir_glob.yml", "test1", "test1/test1.txt", "test1/test2", "test1/test2/test2.txt"] ["dir_glob.rb", "dir_glob.yml", "test1", "test1/test1.txt", "test1/test2", "test1/test2/test2.txt"] ["test1", "test1/test1.txt", "test1/test2", "test1/test2/test2.txt"] ["test1", "test1/test1.txt", "test1/test2", "test1/test2/test2.txt"] ["dir_glob.yml"] ["dir_glob.yml"] ["dir_glob.rb", "dir_glob.yml", "test1/test1.txt", "test1/test2/test2.txt"] ["dir_glob.rb", "dir_glob.yml", "test1/test1.txt", "test1/test2/test2.txt"] ["dir_glob.rb", "test1/test1.txt", "test1/test2/test2.txt"] ["dir_glob.rb", "test1/test1.txt", "test1/test2/test2.txt"]