spa*_*ing 4 sed find recursive replace
所以我得出的结论是,为了递归替换目录中字符串的所有实例(仅适用于 .java 扩展文件),我需要使用
find . -type f -name "*.java" -exec sed -i 's/original/result/g' {} +
Run Code Online (Sandbox Code Playgroud)
但是,如果我要替换的字符串包含 ,我该怎么办/
?
例如,我想/*Comment*/
用几个普通单词替换 string ,我应该使用什么分隔符,以便 sed 正常工作?
您也可以使用任何分隔符sed
(不仅perl
如@vesa-karjalainen 建议的那样),例如
find . -type f -name "*.java" -exec sed -i 's:original:result:g' {} +
Run Code Online (Sandbox Code Playgroud)
小智 2
逃避斜线,写\/
你也可以这样做:
perl -pi -e 's!original!result!g' *java
Run Code Online (Sandbox Code Playgroud)
使用!
作为分隔符而不是/
. 这比使用 find & sed 稍微短一些。