ちょっとしたこと(ファイルの中身の置換)

root
  |
  hoge01
    |
    hoge101.html
    hoge101.jpg
    hoge102.html
    hoge103.html
  hoge02
    |
    hoge201.html
    hoge202.html
    hoge203.html
  hoge03
    |
    hoge301.html

こんな感じでHTMLファイルが置いてあって、
全てのHTMLファイルのタイトルタグの中を一律に変更したくて。

require "fileutils"
Dir.glob("C:/root/*/*.html").each{ |file|
  FileUtils.mv(file, file + ".hoge");
}

置換対象のファイルをブワーっと".html.hoge"という名前に変えます。


で、以下のようなスクリプトを書きました。

f = open(ARGV[0])
while line = f.gets
  if (line.index("<title>") == nil)
    puts line
  elsif
    puts line.sub("<title>", "<title>ほげほげ ") 
  end
end
f.close

プログラムの起動引数で渡されたファイルのフルパスを元に
タイトルタグの部分を書き換えます。
title_chage.rbという名前で保存します。


で、こんな風に呼び出し用のリストを作ってブワーって。

ruby title_chage.rb C:/root/hoge01/hoge101.html.hoge > C:/root/hoge01/hoge101.html
ruby title_chage.rb C:/root/hoge01/hoge102.html.hoge > C:/root/hoge01/hoge102.html
ruby title_chage.rb C:/root/hoge01/hoge103.html.hoge > C:/root/hoge01/hoge103.html

".html.hoge"のタイトルタグ部分を置換させたものを
".html"ファイルにリダイレクトさせます。


呼び出し用のリストを作るのも、
Dir::globと正規表現で置換すればサクっとできます。


って、そんなことしてたら、華麗なる一族がはじまっちゃったじゃないですか。