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

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 正常工作?

Gör*_*org 5

您也可以使用任何分隔符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 稍微短一些。