所以我得出的结论是,为了递归替换目录中字符串的所有实例(仅适用于 .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 稍微短一些。