Rubyでは、Dir.globメソッドを使うことで、ワイルドカードを利用して指定したパターンに一致するファイルを検索することができます。プログラム内で特定の拡張子やファイル名のパターンをまとめて取得したい場合に便利です。
Dir.globの基本的な使い方
Dir.globメソッドは文字列で検索パターンを指定し、マッチしたファイル名の配列を返します。例えば、カレントディレクトリ内のすべての.txtファイルを取得する場合は次のように書きます。
files = Dir.glob('*.txt')
この場合、filesには.txt拡張子を持つすべてのファイル名が配列として格納されます。
ワイルドカードの種類
Dir.globでは一般的なワイルドカードが使用可能です。
*: 0文字以上の任意の文字列にマッチ?: 任意の1文字にマッチ[abc]: a, b, cのいずれか1文字にマッチ
例えば、’data_?.csv’はdata_1.csvやdata_A.csvのように1文字の番号や文字を含むファイルにマッチします。
サブディレクトリも検索する方法
サブディレクトリも含めてファイルを検索したい場合は、**を使います。
files = Dir.glob('**/*.rb')
これで、カレントディレクトリ配下のすべての.rbファイルを再帰的に取得できます。
実践例
特定のパターンに合致する画像ファイルを取得する場合、次のように書けます。
images = Dir.glob('images/**/*.{jpg,png,gif}')
imagesディレクトリ以下のjpg、png、gifファイルがすべて取得されます。
まとめ
RubyのDir.globを使えば、ワイルドカードを活用して柔軟にファイルを検索できます。単純な1階層検索から、サブディレクトリを含む再帰検索まで対応可能です。これにより、プログラム内で効率的にファイルを操作できるようになります。


コメント