bashとsedで複数ファイルのテキストを置換する方法

複数ファイルにまたがって同じテキスト置換を行う方法。
例えばディレクトリ内のHTMLファイル全てに対して置換を行いたい場合1個1個ファイルを開いて編集するのは面倒なので、一発で行いたい。


find . -name "*.html" -exec sed -i 's/元テキスト/置換後テキスト/' {} \;

何をしているのか細かく説明すると

find . -name "*.html" -exec
このディレクトリ(.)の中にある名前が*.htmlにマッチするファイルに対して

sed -i 's/元テキスト/置換後テキスト/' {} \;
上書き保存で(-i) 元テキストを置換後テキストに変更する

となる。
ちなみに {} はfindの結果で得た(この場合はhtmlファイルのファイル名)が入るようになっている。

コメント

人気の投稿