make: используйте grep для поиска определенной строки во всех файлах в папке - PullRequest
0 голосов
/ 01 июля 2018

Я хотел бы найти определенный набор строк в файлах с определенным расширением файла (здесь это .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 будет искать «Foo» во всех .converted файлах в папке. Если есть совпадение, он выведет это на стандартный вывод:

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

Однако мой Makefile этого не делает. Он всегда выводит те же две строки, что и «совпадение», хотя набор строк, которые я ищу, даже не находится ни в одной из этих строк.

Что я делаю не так?

1 Ответ

0 голосов
/ 01 июля 2018

Ваше правило неверно. Вам нужно использовать шаблон ствола $* в качестве шаблона поиска для grep ...

lookfor-%: $(OBJECT)
    grep -H '$*' $<
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...