フォルダ内のすべての出現箇所を変更する 質問する

フォルダ内のすべての出現箇所を変更する 質問する

フォルダー (およびそのサブフォルダー) 内のすべてのファイルに対して正規表現の検索と置換を実行する必要があります。これを行う Linux シェル コマンドは何でしょうか?

たとえば、これをすべてのファイルに対して実行し、古いファイルを新しい置換テキストで上書きしたいとします。

sed 's/old text/new text/g' 

ベストアンサー1

sed だけを使用してこれを行う方法はありません。少なくとも find ユーティリティを一緒に使用する必要があります。

find . -type f -exec sed -i.bak "s/foo/bar/g" {} \;

.bakこのコマンドは、変更されたファイルごとにファイルを作成します。

ノート:

  • -iコマンドの引数はGNUsed拡張機能であるため、このコマンドを BSD で実行する場合は、sed出力を新しいファイルにリダイレクトして名前を変更する必要があります。
  • このfindユーティリティは古い UNIX ボックスでは引数を実装しない-execため、| xargs代わりに を使用する必要があります。

おすすめ記事