Centos中查找并替换某个目录下所有文件中的某个字符

1.批量查找某个目下文件的包含的内容
cd etc
grep -rn "查找的内容" ./
文件内容比较多的话,执行完命令需要等一会。

2.批量替换某个目下所有包含的文件的内容
还是以etc目录为例

cd etc
sed -i "s/查找的内容/替换后的内容/g" `grep -rl "查找的内容" ./`

 

用sed命令可以批量替换多个文件中的字符串。

sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`

例如:我要把mahuinan替换为huinanma,
执行命令:

sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www'

这是目前linux最简单的批量替换字符串命令了!
具体格式如下:

sed -i "s/oldString/newString/g" `grep oldString -rl /path`

实例代码:

sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`
sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`

注意转义:
实例:

sed -i "s/<script src=\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.4\/query.min.js\" type=\"text\/javascript\"><\/script>/ /g" `grep '<script src="http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.4\/jquery.min.js" type="text\/javascript"><\/script>' -rl test/`

sed -i "s/https:\/\/code.jquery.com\/jquery-1.12.4.min.js/<%=basePath%>\/js\/jquery\/jquery-1.12.4.min.js/g" `grep -rl "https:\/\/code.jquery.com\/jquery-1.12.4.min.js" ./`

————————————————
版权声明:本文为CSDN博主「rhsy445566」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rhsy445566/article/details/107594474

 

以下内容是自己的经验:

1、sed -i "s/  /  /g"  `grep ......`这个命令格式在碰到替换复杂字符串时会报错,-bash: syntax error near unexpected token `<',后来的解决办法是用grep命令先找出需要修改的文件,用cut -d : -f 1命令截取所需文件名后,再使用sed -i s/  /  /g 这种不带双引号的命令更改,比较麻烦。

2、碰到管道符|,grep查找时可以用\|转义,但在替换时最好用\x7c(16进制)代替\|

posted @ 2021-10-29 11:12  liulj0713  阅读(1018)  评论(0编辑  收藏  举报