标签:linux
需求:把目录下的所有.sh文件中的内容替换
实现:
ls /data
a.txt b.sh c.sh d.info
方法1
-----------------------------------------------------------
先查看替换前内容
find -type f -name "*.sh" |xargs cat
before
before
测试替换结果,sed无参数时仅打印输出
find -type f -name "*.sh" |xargs sed ‘s#before#after#g‘
after
after
-i参数为在文件中进行替换修改
find -type f -name "*.sh" |xargs sed -i ‘s#before#after#g‘
查看替换后内容
find -type f -name "*.sh" |xargs cat
after
after
注:
|xargs 理解为将管道前输出处理成后续命令的参数(汇成单行)输入
若直接 |cat,则cat只会把管道前的输出当作文本处理
-----------------------------------------------------------
方法2
-----------------------------------------------------------
sed -i ‘s#before#after#g‘ `find -type f -name "*.sh"`
等价于:
sed -i ‘s#before#after#g‘ /data/b.sh /data/c.sh
注:
``符号内的内容先执行
``符号为“Tab键”上面的按键符号,反引号(?)
-----------------------------------------------------------
标签:linux
原文地址:http://tripe.blog.51cto.com/2248780/1954636