在所有文件递归问题中查找和替换字符串

时间:2016-07-10 22:47:57

标签: bash replace sed

我尝试使用此命令在我的android项目中查找并替换字符串。

find . -name '*.java' -print0 | xargs -0 sed -i "" "s;//\#Logger\.;Logger\.;g"

//#记录器。 =>记录器。

它的工作但在某些文件中我有意想不到的变化。使用git diff我得到:

-}
\ No newline at end of file
+}

如何解决?

1 个答案:

答案 0 :(得分:1)

好吧,刚刚想出了问题所在。 您的代码应该如下工作(删除冗余""在sed中使用-i后):

find . -name '*.java' -print0|xargs -0 sed -i "s;//\#Logger\.;Logger\.;g"

或者你可以使用parallel而不是xargs并更快地运行它:

find . -name '*.java' -print0|parallel -0 sed -i "s;//\#Logger\.;Logger\.;g" {}

并在下面建议找到.. -exec variant:

find . -name '*.java' -exec sed -i "s;//\#Logger\.;Logger\.;g" {} +;