[ShellScript] HTMLなどテンプレートを流し込む方法

hoge.html, foo.html, bar.html に初期テンプレートを設定したい場合、
方法としては以下の方法があると思います。

  • 初期テンプレートの書かれたファイルをコピーしていき、それぞれ hoge.html, foo.html, bar.html の名称へリネーム
  • 初期テンプレートの書かれたファイルをそれぞれ hoge.html, foo.html, bar.html に流し込む

色々と他にもいい方法があるとは思うのですが、手早くできる後者の方法でいきたいと思います。

#方法

#準備

まず、空の hoge.html, foo.html, bar.html を作ります。

touch hoge.html
touch foo.html
touch bar.html 

こういった具合です。

次にテンプレートを用意します。
今回はこんなHTMLをテンプレートとして、template.txtに保存します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
</body>
</html>

#コード

最後に流し込みです。

このように流し込んでもいいのですが、大量にファイルがあると骨ですので楽をします。

cat template.txt > hoge.html
cat template.txt > foo.html
cat template.txt > bar.html

こちら(リダイレクト >> を複数のファイルに同時に行いたい – Linux系OS – 教えて!goo)を参考に以下のようなコマンドを作成します。

for i in `find . -name '*.html'`; do cat template.txt > $i; done

ループでリダイレクトする感じです。