RubyでDir.globを使ったワイルドカードによるファイル検索の方法

Ruby

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階層検索から、サブディレクトリを含む再帰検索まで対応可能です。これにより、プログラム内で効率的にファイルを操作できるようになります。

コメント

タイトルとURLをコピーしました