shの使いかた

なんだかんだ言って、sedawk は使いにくい。あたしのようなタコ linuxer には特に。

find -name "*.html" -exec sed -e "s/hoge/HOGE/g" > {} \;

が動かないのは、ちゃんとした un*x な方々には常識なのだろう。この場合 > が -exec の引数とは認識されないので、find の出力が {} というファイルに書き出されてしまう。ハードディスクが {} なるファイルで埋めつくされてしまうのはこのせいである。
簡単なのは一度、-exec の内容をスクリプトファイルにして -exec ./hoge.sh とでもすることだが、エレガントではない。cat ではやりなおしもきかないし。
今日、こういった方法を知った:

要は find の出力を sed に流してシェルスクリプトを作成し、sh で実行するというパイプラインである。これは簡単だし、分かり易そうだ。今度使ってみよう。