grep find rename sed

rename

对当前目录 文件名称进行替换(rename 命令)

rename -v 's/abc/def/' `find ./ -name "*abc*"`     abc 替换成 def
rename -v 's/Abc/Def/' `find ./ -name "*Abc*"`     Abc 替换成 Def
rename -v 's/ABC/DEF/' `find ./ -name "*ABC*"`    ABC 替换成 DEF

http://www.jb51.net/LINUXjishu/240112.html
http://www.cnblogs.com/amosli/p/3491649.html

sed=========

对当前目录中 存在某些特定字符的文件, 进行字符替换 (sed 命令)

sed -i "s/abc/def/g" `grep "abc" -rl ./ -R --exclude-dir=.git` 
sed -i "s/Abc/Def/g" `grep "Abc" -rl ./ -R --exclude-dir=.git` 
sed -i "s/ABC/DEF/g" `grep "ABC" -rl ./ -R --exclude-dir=.git`

对命令进行解释一下

1.sed替换的基本语法为: 另外一个详解地址 http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/
http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html
sed ‘s/原字符串/替换字符串/’

2.单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:
sed “s/原字符串包含’/替换字符串包含’/” ———-要处理的字符包含单引号

3.
命令中的三根斜线分隔符 可以换成别的符号, 这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:
sed ‘s?原字符串?替换字符串?’ ———–自定义分隔符为问号

  1. sed ‘s/原字符串/替换字符串/g’
    可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个, 替换所有匹配关键字

5.上箭头”^”表示行首,美元””符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),  
  首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:  
    sed ‘s/^/添加的头部&/g’ //在所有行首添加  
    sed ‘s/
/&添加的尾部/g’ //在所有行末添加
sed ‘2s/原字符串/替换字符串/g’ //替换第2行
sed ‘ s///g//sed2,5s///g//25sed2, s/原字符串/替换字符串/g’ //替换2到最后一行

6.替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:
sed ‘s/^/添加的头部&/g;s/$/&添加的尾部/g’ //同时执行两个替换规则

7.sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:
sed -i ‘s/原字符串/替换字符串/g’ filename //替换文件中的所有匹配项

强大的grep命令

1.在某个文件中搜索指定字符串

在/etc/passwd文件中,搜索字符串guolei:

grep ‘guolei’ /etc/passwd
注意,guolei的引号可以省略,但是如果搜索字符串中有空格或者你使用正则表达式,就需要加了。

2.在多个文件中搜索指定字符串

在当前目录中,搜索包含字符串guolei的文件:

grep -r guolei *
注意:-r是recursive的缩写,表示递归的搜索。

在当前目录的.java文件中,搜索包含字符串guolei的文件:
grep -r guolei *.java

有时候,我们的搜索结果可能比较多,我们可以结合less命令来展示结果:
grep -r guolei *.java | less

或者搜索结果比较多,我们只需要列出文件名:
grep -rl guolei *.java

还有一种需求比较常见,我们经常想找到某一个目录中,包含指定字符串的文件,
注意上面的命令不可以递归查找。比如,我们想在当前目录下递归的查找所有.java文件中包含字符串guolei的文件:

find . -type f -name *.java -exec grep -il guolei {} \;

3.搜索时忽略大小写 在搜索guolei时,忽略大小写:

grep -ri guolei *
注意:-i是Ignore case的缩写,表示忽略大小写。

4.搜索结果中列出行号 在搜索结果中,列出字符串出现位置的行号码:

grep -rn guolei *.java
注意-n是number的缩写,表示行号的意思。

5.反向搜索 实际开发中,还有一种情况比较常见,我们要在某个目录下搜索不包含某个字符串的文件:

grep -riv guolei * | less
注意:-v是reverse的缩写,表示逆向的意思。上面的例子为在当前目录中搜索不包含guolei的文件。

6.在管道中使用grep

我们经常还会在管道命令中使用grep,这个最常见。比如我们要搜索目前系统中的mysql进程:

ps -ef | grep mysql

或者列出当前目录以html结尾的文件:

ls | grep ‘html$’

grep
http://www.2cto.com/os/201211/171662.html

find

linux下find查找命令用法
http://www.jb51.net/os/RedHat/1307.html

linux grep和find命令
http://blog.csdn.net/wdzxl198/article/details/8929250
http://www.itshouce.com.cn/linux/linux-grep.html
http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值