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

标签 string shell unix replace

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

我正在使用 RHEL5。

最佳答案

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

find . -type f -exec sed -e 's/Test_Dbv3/TestDbv3/g' -i.bak '{}' +

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

sed 将逐文件、逐行执行我们指定的命令。我们给它的命令是 s/Test_Dbv3/TestDbv3/g,它翻译为“将正则表达式 Test_Dbv3 与文本 TestDbv3 进行替换匹配” code>,允许每行多次替换”。 -i.bak表示用结果替换原始文件,保存未修改的版本,文件名后缀为.bak

关于string - 用于替换文件夹中每个文件中字符串的所有实例的 Unix 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119685/

相关文章:

linux - 使用 find 命令查找、压缩和删除文件时出错

linux - Apache 基准 HTTPS 问题

Javascript 字符串搜索问题

C++ 更新结构

c - strncpy 在不同 IDE 中的行为

java - 我是否必须定义一个新常量才能使用在 Windows 上运行的程序生成 unix 文件分隔符

bash - 尝试在 cygwin 中运行脚本时出错

c - Spark 核心 wifi 凭据更改

c - 为什么这里没有生成 Coredump 文件?

shell - 逐行扫描文本文件并使用unix shell脚本读取行