edo1z blog

プログラミングなどに関するブログです

ディレクトリ内の全ファイルの置換

find . -type f | xargs sed -i -e s/hoge/hogehoge/g

macでillegal byte sequenceというエラーがでる場合は、下記をやる。

export LANG=C

追記:2014年2月14日

sedは、iオプションで上書き更新ができるが、上記コマンドを打つと-eという文字が後ろについたバックアップファイルが作成されてしまう。-i".bak"とかってやると、.bak拡張しでバックアップができて、-iだけだとバックアップできないと思ってるんだけど、-eという文字列が後ろにくっついたファイルがバックアップとして作成されてしまっている。上記コマンドは-i -eとなってるので、この-eをバックアップファイルにくっつける文字列と勘違いしているのかもしれない。

とりあえず、-eとくっついたファイルが沢山できてしまったので、削除する場合は、下記のようにやる。

find app/View/. -name "*.ctp-e*"  -type f | xargs rm

これはcakePHPのviewファイルでctp拡張しの後ろに-eとついってしまっているものを全部削除している様。sedの処理を複数回やっていると、-e-e-eとかっていう残念なファイルが沢山できてしまったので、-e-e-eとかのファイルも全部削除している。

-i"" -eとかやっても、やはり-eという文字がくっついたバックアップファイルが作成されてしまう。仕方ないので、全ファイル置換してからバックアップファイル削除することにした。微妙だ。