make:使用grep在文件夹内的所有文件中查找特定的字符串

时间:2018-07-01 16:29:49

标签: search text makefile grep

我想在当前文件夹中的具有特定文件扩展名(此处为.textfile)的文件中查找一组特定的字符串。为此,我想使用 make

之前,我将所有.pdf文件转换为.txt文件,并将其.txt扩展名重命名为.textfile。在转换过程中,文件名本身将保持“不受损害”。到目前为止,我的代码:

#Variables that save the filenames of all .pdf files
SOURCE=$(wildcard *.pdf)
OBJECT=$(SOURCE:.pdf=.textfile)

#The conversion target
textfile: $(OBJECT)                     
%.textfile: %.pdf
    @pdftotext -f $(FROM_PAGE) $< $@

要在这些文件中查找一组字符串,我已将其添加到代码中:

lookfor-%: $(OBJECT)
    grep -H % $<

因此,调用make lookfor-Foo将在该文件夹中所有.converted文件中查找“ Foo”。如果有匹配项,它将打印到标准输入:

file1.converted: Foo is here
file231.converted: here is Foo for you!

但是,我的Makefile没有执行此操作。即使我要查找的字符串集甚至不在这些行中,它也总是打印出与“ match”完全相同的两行。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您的规则不正确。您需要使用模式词干$*作为grep ...的搜索模式...

lookfor-%: $(OBJECT)
    grep -H '$*' $<