Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Dir#glob

概要

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"]