Я хотел бы найти определенный набор строк в файлах с определенным расширением файла (здесь это .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 этого не делает. Он всегда выводит те же две строки, что и «совпадение», хотя набор строк, которые я ищу, даже не находится ни в одной из этих строк.
Что я делаю не так?