フォルダー (およびそのサブフォルダー) 内のすべてのファイルに対して正規表現の検索と置換を実行する必要があります。これを行う 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
代わりに を使用する必要があります。