使用sed以递归方式查找和删除多个文件

时间:2013-04-02 10:27:37

标签: sed

如何进行字符串匹配,例如:

<meta name="keywords" content="

然后每次找到匹配项时删除整行?

我希望对当前目录及以下的所有文件执行此操作。

我也是sed的新手。

2 个答案:

答案 0 :(得分:5)

尝试此命令:

find . -type f -exec sed -i '/foobar/d' {} \;

foobar更改为您搜索的内容。

答案 1 :(得分:2)

回答问题:“我如何递归地对所有文件执行x?”,答案是使用find。要使用sed删除行,您可以使用非可移植-i,也可以只编写脚本来重定向流。例如:

find . -exec sh -c 'f=/tmp/t.$$; 
    sed "/<meta name=\"keywords\" content=\"/d" $0 > $f; mv $f $0' {} \;