プロジェクトのファイル内容を一括置換する
来年所属する会社の事業が子会社化するため各サービスのプロジェクトのコピーライトやらリンクを変更しなくてはならなくなったので簡単な一括置換のワンライナーを組んだのでメモ。(* 使ってる環境はmac)
$ LANG=C find . -type f \( -name \*.js -o -name \*.css -o -name \*.html \) -exec sed -i '' -e 's/置換1/置換後1/g;s/置換2/置換後2/g' {} +; $ LANG=C find . -type f \( -name \*.js -o -name \*.css -o -name \*.html \) -exec sed -i '' -e '/削除文字列/d' {} +;
コードの末尾に改行がないファイルはNo newline at end of fileのエラーで余計な差分が出るので以下のgitコマンドでファイルをaddする。
$ git diff -w # 改行コードや空白を無視して変更を確認 $ git diff -w --no-color | git apply --cached # 改行のみの変更点を除外してadd $ git co . # 改行のみの変更点を戻す
もっと簡単な方法はあるんだろうけどぱっと変更できる形が上記でした。
適当なシェルなどを組んで引数に変更点を渡して使えるようにしとけば良いかも。