grep 查询字符

替换所有包含内容的字符串

grep ‘/r/‘ -rl ./ |xargs sed -i s?’\/r\/‘?’\/jrfr\/‘?g

grep ‘/r/‘ -rlZ ./ |xargs -0 sed -i s?’\/r\/‘?’\/jrfr\/‘?g

grep ‘/r/‘ -rl :列出包含 /r/ 字符串的 文件名称和目录
grep -rin ‘undefined’ ./ :列出包含 undefined 字符串的 文件目录 和所在行内容

-a 不要忽略二进制数据。-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。-c 计算符合范本样式的列数。-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-e<范本样式> 指定字符串作为查找文件内容的范本样式。-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。-F 将范本样式视为固定字符串的列表。-G 将范本样式视为普通的表示法来使用。-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。-H 在显示符合范本样式的那一列之前,标示该列的文件名称。-i 忽略字符大小写的差别。-l 列出文件内容符合指定的范本样式的文件名称。-L 列出文件内容不符合指定的范本样式的文件名称。-n 在显示符合范本样式的那一列之前,标示出该列的编号。-q 不显示任何信息。-R/-r 此参数的效果和指定“-d recurse”参数相同。-s 不显示错误信息。-v 反转查找。-w 只显示全字符合的列。-x 只显示全列符合的列。-y 此参数效果跟“-i”相同。-o 只输出文件中匹配到的部分。

sed 替换字符

sed -i s?’\/r\/‘?’\/jrfr\/‘?g
? : 间隔符 可以使用 / 等其他字符

sed : <、>、{、} 这些不是特殊字符不需要加\替换

\< 词首定位符 /\<my/ 匹配包含以my开头的单词的行
\> 词尾定位符 /my\>/ 匹配包含以my结尾的单词的行

特殊字符:

http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html

替换已知文件中的字符串

  1. find -name '*.html' -print0 |xargs -0 sed -i s?'<p>\${site\.copyright\!}<\#include \"\/WEB-INF\/jrft\/cms\/common/technical_support\.html\"\/><\/p>'?'<div class=\"c-copyright\">${site\.copyright\!}<\/div><div class=\"support\"><\#include \"\/WEB-INF\/jrft\/cms\/common\/technical_support\.html\"\/><\/div>'?g
  1. <p>${site.copyright!}<#include "/WEB-INF/jrft/cms/common/technical_support.html"/></p>
  2. 替换成
  3. <div class="c-copyright">${site.copyright!}</div><div class="support"><#include "/WEB-INF/jrft/cms/common/technical_support.html"/></div>

find 命令 ,查询某目录 和 不查询某目录

  1. find -name '产品搜索.html' -wholename '*/search/*' ! -wholename '*/mobile/*'

修改 r 文件夹名称 for循环查询出的r文件夹 修改为 jrfr

for name in find -name r;do mv $name ${name/\/r/\/jrfr} ;done

代码中 find -name r ,引号 为 1旁边的 按键

查询文件中有‘在家’ 文字的文件
find -name ‘*.html’ -print0 |xargs -0 grep ‘在家’