特定のディレクトリ内のファイル中の文字列をまとめて置換


まとめて置換する

特定のディレクトリの中にある全ファイルの中にある、特定の文字列を一気にまとめて置換する方法を自分用にメモ。grepの-rオプションにより子ディレクトリ内のファイルについても再帰的に適用される。

  • ファイルを上書きする
grep '置換前の文字列' -rl '対象のディレクトリ' | xargs sed -i -e 's/置換前の文字列/置換後の文字列/g'
  • バックアップファイル(.bak)を残す
grep '置換前の文字列' -rl '対象のディレクトリ' | xargs sed -i.bak -e 's/置換前の文字列/置換後の文字列/g'
  • 置換する文字列にスラッシュ( / )が含まれる
    • sedコマンドに用いる区切り文字にはスラッシュ( / )以外も使用できる
grep '置換前の文字列' -rl '対象のディレクトリ' | xargs sed -i -e 's#置換前の文字列#置換後の文字列#g'