大量のファイルから文字列をまとめて変更する効率的な方法

ファイル操作/圧縮
スポンサーリンク

複数のファイルの中にある同じ文字列をまとめて修正したいと思ったことはありませんか?
例えば、数百のテキストファイルに含まれる社名やURLを新しいものに置き換えたい場合、エディタで一つずつ開いて「検索と置換」をするのは現実的ではありません。

こうした場面で便利なのが、ターミナルでの一括置換です。特に sed コマンドを使えば、大量のファイルでも一瞬で修正できます。

単一ファイルでの文字列置換

まずは基本的な使い方から見てみましょう。

sed -i 's/oldword/newword/g' target.txt
  • -i : ファイルを直接修正する(バックアップを取りたい場合は -i.bak などを指定)
  • s/oldword/newword/g : oldwordnewword にすべて置換
  • target.txt : 修正対象のファイル

この例では、target.txt 内の「oldword」がすべて「newword」に置き換わります。

複数ファイルをまとめて置換する

複数のファイルを対象にする場合はワイルドカードを使います。

sed -i 's/oldword/newword/g' *.txt

このコマンドを実行すると、カレントフォルダにある .txt ファイルすべてで文字列が置換されます。

フォルダ全体のファイルを対象にする

サブフォルダも含めてまとめて修正したい場合は find と組み合わせます。

find . -type f -name "*.html" -exec sed -i 's/oldlink.com/newlink.com/g' {} +
  • . : カレントディレクトリを基点に検索
  • -type f : ファイルを対象にする
  • -name "*.html" : .html ファイルを対象にする
  • -exec sed -i ... {} + : 見つかったファイルをすべて処理

これでプロジェクト内のすべてのHTMLファイルにある旧URLを新しいURLに置換できます。

実用シーン

  • 社名や部署名などの表記を一括で修正したい
  • ウェブサイトのURL変更に伴って大量のファイルを書き換えたい
  • プログラムや設定ファイルの変数名をまとめて変更したい

日常的な文書整理からシステム管理まで、幅広い場面で役立ちます。

注意点

  • 誤置換を防ぐために、最初は -i を付けずに出力確認するのがおすすめです。
sed 's/oldword/newword/g' target.txt
  • 大量のファイルを一度に処理する場合は必ずバックアップを取ってから実行しましょう。

まとめ

大量のファイルに含まれる文字列をまとめて変更したいときは、sed を活用すれば効率的に作業できます。

  • 単一ファイルから複数ファイル、フォルダ全体まで対応可能
  • 「検索と置換」を繰り返す手間を省き、数秒で一括修正できる
  • 文書整理やプロジェクト管理に大きく役立つ

ファイル修正に時間をかけたくない方は、ぜひ取り入れてみてください。

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント