だから私は、ディレクトリ内の文字列のすべてのインスタンスを再帰的に置き換えるには(.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 を使用するよりも少し短いです。