BASH:用于替换文件树中的文本的递归程序

Erk*_*ken 15 bash recursion replace

我是Bash的全新人,但我似乎无法找到一种方法让它做我想做的事.

想象一下,你有一个包含2个文件的树目录:/top.php和/test/bottom.php

如何使我的函数看起来并替换在/top.php和/test/bottom.php中将"hello"改为"bonjour"?

到目前为止,我发现这样做的唯一方法是使用不同的深度级别调用相同的函数两次:

find ./*.php -type f -exec sed -i 's/hello/bonjour/' {} \;
find ./*/*.php -type f -exec sed -i 's/hello/bonjour/' {} \;
Run Code Online (Sandbox Code Playgroud)

当然有一种递归的方式在一行中做到这一点?

thi*_*ton 37

使用实际模式进行查找而不是shell通配符扩展:

find . -name '*.php' -type f -exec sed -i 's/hello/bonjour/' {} \;
Run Code Online (Sandbox Code Playgroud)