![【Linux】sedコマンドで複数ファイルの文字列を一括置換する](/_astro/cover.imlDBISW_ZnsXua.webp)
find
コマンドとsed
コマンドを組み合わせることで、ディレクトリ配下の文字列を一括置換することができます。
keyword
を置換前文字列、after_keyword
を置換後文字列として説明をします。
それぞれ置換前後の文字列を置き換えてご参照ください。
置換前確認(keyword)
置換前の文字列を確認します。
grep -r "keyword" ./
特定のディレクトリを除外する場合は--exclude-dir
を使用してください。
grep -r "keyword" ./ --exclude-dir={.git,node_modules}
一括置換(keyword⇒after_keyword)
カレントディレクトリ配下のkeyword
をafter_keyword
へ一括置換します。
ファイルはsedのi
オプションにより置換後で保存されるので、コマンド実行時はご注意ください。
- keywork:置換前文字列
- after_keywork:置換後文字列
カレントディレクトリ配下のファイルを一括置換する場合は以下コマンドを実行します。
find ./ -type f -print | xargs sed -i "s/keyword/after_keyword/g"
特定のディレクトリを除外する場合は以下のようにgrepコマンドと組み合わせます。
find ./ -type f -print | grep -v -e node_modules -e .git | xargs sed -i "s/keyword/after_keyword/g"
上記の場合はnode_modules
と.git
を除外しています。
置換後確認(after_keyword)
置換されたことを確認します。
grep -r "after_keyword" ./
特定のディレクトリを除外する場合は--exclude-dir
を使用してください。
grep -r "after_keyword" ./ --exclude-dir={.git,node_modules}
以上です。
よいITライフを。