find查找替换 不指定

kangyang , 2014/08/26 16:05 , LINUX系统管理 , 评论(0) , 阅读(2429) , Via 本站原创 | |

1、sed
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.jianxu.net为jianxu.net
sed -i "s/www.jianxu.net/jianxu.net/g" `grep www.jianxu.net -rl /home`

2、Perl
下面这条命令:
perl -pi -e ’s|ABCD|Linux|g’ `find ./ -type f`
将调用perl执行一条替换命令,把find命令找到的所有文件内容中的ABCD替换为Linux
find ./ -type f
此命令是显示当前目录下所有的文件
上面的“s|ABCD|Linux| g”是perl要执行的脚本,即把所有ABCD替换为Linux
如果不写最后的那个g,“s|ABCD|Linux| ”将只替换每一行开头的ABCD

3、Shell
在日常的开发过程中,可能大家会遇到将某个变量名修改为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任;
但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是一个不明智的选择。
这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改:
grep "abc" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'
替换字符:sed -i "s/old/new/g" /test
查找包含指定字符的文件名:grep aaa –ul  /test
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]