ワイルドカードにマッチしたファイル全てに処理を行う
Dir::globメソッドにより指定したワイルドカードを展開し、マッチしたファイルの一覧を取得することができます。以下のようにするとマッチした全てのファイルに対して順番に処理を行うことができます。
code:ruby
Dir::glob("/home/take/public_html/*.html").each {|f|
# ここにマッチしたファイルに対して行う処理を記述する
# この例ではファイル名とファイルのサイズを標準出力へ出力している
puts "#{f}: #{File::stat(f).size} bytes"
}
ワイルドカードに**/を指定するとサブディレクトリ配下のファイルもマッチします。以下の例では/home/take/public_html配下にある*.htmlのファイル名とファイルサイズを標準出力へ出力します。
code:ruby
Dir::glob("/home/take/public_html/**/*.html").each {|f|
# ここにマッチしたファイルに対して行う処理を記述する
# この例ではファイル名とファイルのサイズを標準出力へ出力している
puts "#{f}: #{File::stat(f).size} bytes"
}
ワイルドカードには以下のものがあります。
table:ワイルドカード
* 空文字列を含む任意の文字列と一致します。
? 任意の一文字と一致します。
[]内のいずれかの文字と一致します。A-Zのように指定すると範囲を表します。^の場合、そこに含まれない文字と一致します。
{ } {}内で,で区切られた文字列の組合せに展開します。例えばfoo{a,b,c}はfooa, foob, foocに展開されます。他のワイルドカードと異なり、展開結果のファイルが存在している必要はありません。
**/ ディレクトリを再帰的に辿りマッチを行います。例えば、foo/**/ はfoo/bar/、foo/bar/hogeなど、配下の全サブディレクトリとマッチします。
#ディレクトリ