运用
perl -pi -e 's/pattern/replacement/g' $(find src -type f)
Run Code Online (Sandbox Code Playgroud)
很好,除了一件事:所有文件都被覆盖,即使没有任何匹配.这并不好,因为我经常在Emacs或Eclipse中打开它们,然后问我无聊的问题.有一种简单的方法可以防止触摸未更改的文件(在查找中使用grep的东西太多了,特别是对于复杂的模式).
-i
打开文件后的第一件事就是修改unlink
它,这意味着您不能-i
在不想修改的文件上使用。
find src -type f -exec grep -Pl 'pattern' {} + |
xargs perl -i -pe's/pattern/replacement/g'
Run Code Online (Sandbox Code Playgroud)
当然,grep
已经可以执行递归搜索,因此除非您需要使用find
比您指示的更进一步的过滤结果,否则您可以使用
grep -Plr 'pattern' src |
xargs perl -i -pe's/pattern/replacement/g'
Run Code Online (Sandbox Code Playgroud)
注意:cmd | xargs perl ...
可以处理比perl ... $( cmd )
.