Highlighted comment

Topic and comment

シェルで複数ファイルに対して一括して文字列置換処理を行うコマンド

wakairo @wakairo

例として、シェルでgitで管理している全ての.cファイル内にあるabcをdefに置換する一行の書き方は以下の通りです。

git ls-files -z -- '*.c' | xargs -0 -r sed -i 's/abc/def/g'
  • -z-0 により、空白や改行を含むファイル名にも対応します。このようなファイル名がない場合には、 -z-0 の両方のオプションを外してOKです。
  • -r は対象ファイルが0件なら sed を実行しません(GNU xargs)。

なお、macOS/BSD系の sed では次のようにするらしいです。

git ls-files -z -- '*.c' | xargs -0 sed -i '' 's/abc/def/g'
0
Raw
https://www.techtips.page/en/comments/1205
· 125 views