2017-07-26 30 views
0

我有一大堆需要添加评论的文件。使用sed和find,如何仅在文件包含特定值时才附加到文件?

在我使用的sed像这样:

sed -i '/line1/a line2' *

时,我想匹配的LINE-1,在我的目录下添加上的每个文件2号线,但对于只包含一个文件,这是罚款某些参数?

例如,如果我想添加评论,但只包含文本文件:

add comment here

我在想,也许做这样的事情:

find . -file '*.txt' -exec grep -iR 'add comment here' {} \; -exec sed -i '/line1/a line2/' {}\;

但是这不能按预期工作。

+1

你的意思是'-type f'?当你的'find'已经遍历目录时,你为什么要递归地使用'-R'来grep?我认为你也需要' - quiet'。 –

回答

0

您可以直接使用grep只发出符合条件的文件名:

grep "add comment here" -r . --include \*.txt -l | xargs sed -i '/line1/a line2/' 

-r .具有的grep在当前目录中递归搜索文件,--include \*.txt告诉grep来只考虑.txt文件,并-l说只打印包含该模式的文件的名称,没有别的。

相关问题