删除Linux中包含字符串的多个文件中的一行

时间:2017-07-14 13:27:55

标签: linux sed grep exec

我正在将部分网页从8859移至UTF,因此我只将UTF包含在大多数网页上的文件中。我试图从包含该页面的页面中删除charset定义的行。

find . -type f -exec grep -lr 'headIncluded' {} + -exec sed -i '/meta http-equiv=\"content-type\" content=\"text\/html; charset/d' {} \;

我认为这个应该可行,但我注意到它删除了headIncluded不存在的几页中的行。对此命令有什么问题的任何建议?

2 个答案:

答案 0 :(得分:1)

为什么不尝试:

grep -lr "headIncluded" /pathtodirectory/* | xargs sed -i '/meta http-equiv=\"content-type\" content=\"text\/html; charset/d'

答案 1 :(得分:1)

使用+终止-exec时,该命令将运行多个文件。如果这些文件中的任何一个包含字符串,则grep将成功。此外,从文档" -exec的这个变体总是返回true",因此grep的返回值是无关紧要的。