シェルで複数ファイルに対して一括して文字列置換処理を行うコマンド 20 views Post @wakairo 12 hours22 Jun, 2026 07:45 +00:00 例として、シェルで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' Write Preview How to write in Markdown
@wakairo 12 hours22 Jun, 2026 07:45 +00:00 例として、シェルで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'
例として、シェルでgitで管理している全ての.cファイル内にあるabcをdefに置換する一行の書き方は以下の通りです。
-zと-0により、空白や改行を含むファイル名にも対応します。このようなファイル名がない場合には、-zと-0の両方のオプションを外してOKです。-rは対象ファイルが0件ならsedを実行しません(GNUxargs)。なお、macOS/BSD系の
sedでは次のようにするらしいです。