はらへり日記

腹に弾丸

macOS環境下で複数ファイルの先頭に一括で文字を挿入する

やりたかったこと

既存コードにflowを導入したかったのでとりあえず全JSの先頭行に// @flow weakを挿入したかった。

shell

find ./app/assets/js -type f -name '*.js' -exec sed -i "" -e $'1s/^/\\\/\\\/ @flow weak\\\n/' {} \;

詳しい解説はshellで疲弊したので省略します。 とりあえず気をつけなきゃいけないことは

  • macOSsedBSD系なので使い方がCentOSとかのものと全然違う
  • xargsでpipeするとなぜかうまく動かない

という点です。 xargsがおかしくてもう諦めかけたところでfindコマンドの-execオプションを知って解決した次第です。最高。

まとめ

もうしばらくshellは書きたくないね。