使用 find 和 sed 替换多个文件中的字符串

使用 find 和 sed 替换多个文件中的字符串

所以我得出的结论是,为了递归替换目录中字符串的所有实例(仅适用于 .java 扩展文件),我需要使用

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

但是,如果我尝试替换的字符串包含 ,我该怎么办/

例如,我想/*Comment*/用几个普通单词替换字符串,我应该使用什么分隔符,以便 sed 正常工作?

答案1

您也可以使用任何分隔符sed(不仅仅是perl@vesa-karjalainen 建议的那样),例如

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

答案2

逃避斜杠,写\/ 你也可以这样做:

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

使用!作为分隔符而不是/.这比使用 find & sed 稍微短一些。

相关内容