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? 意思是遇到了一个空开头的目录。系统认为它不是一个普通的文件。