findメモ

この日記の記事(限りなくHTML4 Strictに近くて、ISO-2022JPで書かれているファイル)を諸般の事情により内容を再利用することを目的に、元の記事をを残しつつ、XHTML 1.0 Strict(UTF-8)に変換しようかと画策している。今回の見直しは結構大きめで、せっかくだからスタイルシートの指定も一気につもりつもりなのだ。

今日の努力で一日分の記事のファイル(index.html)について、上記の変換がshとsedとHTML Tidyでできるようになったのだが、変換したいファイルはyyyyが西暦年、mmが月、ddが日として

~/html/diary/yyyy/mm/dd/

と言うディレクトリに静的に入っている。個数を勘定(LS-lRしてindex.htmlを検索語にgrep書けて行数を数えただけ)してみたところ、1200個くらいのファイルがある。(足かけ5年分だとこのくらい?当然ディレクトリの個数がその程度ある。) さすがに手でやるのも気が遠いというか、そんなの人間のお仕事ではないので、再帰的にできないかなと思うわけだ。いったん1つのファイルを処理する適当に書いたシェルスクリプトはこんなかんじ。あんまり考えないで書いたので、動作の通りそのまんま。

bash nikki2xhtml.sh #!/bin/sh if [ -e $1.orig ] ; then echo "既に処理済みです" else cp $1 $1.orig sed -e 's/www\.ymzk\.org\/~kentaro/www.dabesa.org/' \ -e 's/diary\/diary\.css/standard.css/' \ -e 's/ align=\"right\"/ class=\"d_footer\"/' \ -e 's/<code><pre>/<pre><code>/' \ -e 's/<\/pre><\/code>/<\/code><\/pre>/' $1.orig > ~/tmp/tmp1 iconv -f ISO-2022-JP -t EUC-JP ~/tmp/tmp1 > ~/tmp/tmp2 tidy -output ~/tmp/tmp3 -config ~/TidyConf.txt ~/tmp/tmp2 sed -e 's/EUC-JP/UTF-8/' \ -e 's/<pre><code>/<div class=\"code\">/' \ -e 's/<\/code><\/pre>/<\/div>/' ~/tmp/tmp3 > ~/tmp/tmp4 iconv -f EUC-JP -t UTF-8 ~/tmp/tmp4 > ~/tmp/$1 rm ~/tmp/tmp[1-4] fi

~/html/diary までは同じだから、~/html/diaryからの相対パスで変換したいファイル名のリストを作って、1つずつ食べていただけばいいのだろうか? と思ったのだが、たしか再帰的に呼び出すコマンドがあったようなと思ってTLUC-MLで質問したら、吉藤さんから「find?」と言うコメントをいただいたので、_ああ、そんな便利なコマンドあったなぁ_と思いだした。シェルスクリプトをnikki2xhtml.shとした場合、

find ~/html/diary -name index.html -exec ./nikki2xhtml.sh {} \;

とすれば良いわけだ。なんだか1年くらい前にもfindな話を聞いたのを思い出した… findは1年ぶり、sedに至っては12年ぶりだ… わすれるわなあ。と言うことでメモ。(なんか前回も吉藤さんにコメントをいただいた気がする…)

2018年も今日でおしまい

## はじめに2018年も気がついてみれば大晦日。今年も昨年までと同様の書き出しで・・・ 年末はこのサイトを運営しているサーバーが危うく死にかけたということを除けば、さほど大したネタもなかったので、のんびりとした大晦日を迎えることとなった。例年通り、残り時間を気にしてこの記...… Continue reading

zfs HDD入れ替え

Published on December 28, 2018

MacBook Pro 13inchの設定

Published on November 28, 2018