Unix命令替换文件夹中每个文件中的所有字符串实例

gra*_*aci 2 unix string shell replace

我有一个文件夹"模型".在其中,我需要将术语"Test_Dbv3"的所有实例替换为"TestDbv3".有多个文件的名称如test_host.hbm.xml,test_host2.hbm.xml,testHost.java,testHost2.java等.有没有办法可以使用Unix命令或任何语言的脚本来做到这一点?

我正在研究RHEL5.

ick*_*fay 18

sed在就地模式下find应该可以工作:

find . -type f -exec sed -e 's/Test_Dbv3/TestDbv3/g' -i.bak '{}' +
Run Code Online (Sandbox Code Playgroud)

恰当命名的find命令查找文件.在这里,我们在当前工作目录(.)中找到文件()的文件-type f.使用这些文件,我们将找到-exec一个命令:sed.+表示命令的结束,我们希望{}用操作系统允许的文件替换.

sed将逐个文件地逐行执行我们指定的命令.我们给它的命令是s/Test_Dbv3/TestDbv3/g,它转换为"正则表达式Test_Dbv3与文本的替换匹配TestDbv3,允许每行多次替换".的-i.bak手段来代替,结果原来的文件,保存未修改的版本与后缀的文件名.bak.