如何从linux中的几个文件中删除特定行?

时间:2015-02-23 14:25:28

标签: html linux bash shell unix

我在子文件夹中有几个html文件,它们有一个冗余链接,如:

<link rel="stylesheet" href="../demos.css">

我正在尝试使用linux中的以下命令从所有html文件中删除此行:

find -name '*.html' -exec sed --in-place=.bak 'demos.css' "{}" ;

但是这给了我以下错误:

find: missing argument to `-exec'

是的,我当然已经检查了与此相关的Stackoverflow上的所有解决方案,但大多数都是关于单个文件,其余的没有帮助。这段代码我做错了什么?

3 个答案:

答案 0 :(得分:2)

find缺少起始路径,sed缺少d命令,您需要在find命令中转义分号:

find . -name '*.html' -exec sed -i.bak '/demos\.css/d' '{}' \;

或更好:

find . -name '*.html' -exec sed -i.bak '/demos\.css/d' '{}' +

答案 1 :(得分:0)

请试试这个:

for i in `find /www/htmls/ -name "*.html" 2>/dev/null`
do
    sed -i '/demos\.css/d' "$i"
done

答案 2 :(得分:0)

for i in `find /www/htmls/ -name "*.html" 2>/dev/null`
do
    sed -i 's/^demos.css.*//' "$i"
done