findとsedを使用して複数のファイルの文字列を置き換える

findとsedを使用して複数のファイルの文字列を置き換える

だから私は、ディレクトリ内の文字列のすべてのインスタンスを再帰的に置き換えるには(.java拡張ファイルのみ)、次を使用する必要があるという結論に達しました。

find . -type f -name "*.java" -exec sed -i 's/original/result/g' {} +

しかし、置き換えたい文字列にが含まれている場合はどうすればよいですか/

/*Comment*/たとえば、文字列をいくつかの一般的な単語に置き換えたい場合は、sedが正しく機能するためにどの区切り文字を使用する必要がありますか?

答え1

@vesa-karjalainenが提案しただけでなく、sedすべての区切り文字を使用することもできます。perl

find . -type f -name "*.java" -exec sed -i 's:original:result:g' {} +

答え2

スラッシュをエスケープするには、\/ 次のように記述します。次のようにすることもできます。

perl -pi -e 's!original!result!g' *java

!代わりに区切り記号として使用してください/。これは find & sed を使用するよりも少し短いです。

関連情報