shell中把多个文件夹下的多个文件的内一个内容替换成另一个内容

 sed -i 's/contentType=\"text\/html;/contentType=\"text\/vnd.wap.wml;/g' `grep -ril '<%@page contentType="text/html; charset=' /root/whp/pd/*`

 把所有的contentType=\"text\/html;的更新为contentType=\"text\/vnd.wap.wml;

 

grep前面与后面用的是tab键上面的那个字符。sed 后面的-i意思是在当前行进行操作。s/的意思是取代的意思,就是用后面的内容取代前面的字符。例如 s/old/new/g.的意思是用new来取代old的内容。text\/html的意思是让/取消其转义的功能。而只是把它当做一个/。

 

grep中的-r意思是要遍历所有的子目录。-i的意思是不区分大小写。-l是查询多文件时只输出包含匹配字符的文件名。

 

 

注意:在上面语句中操作时,如果grep查询的文件所在的目录或文件名有空格,那么就会报错。

sed: couldn't edit /root/whp/pd/: not a regular file  意思是遇到了一个空开头的目录。系统认为它不是一个普通的文件。

你可能感兴趣的:(shell)