Я хочу рекурсивно искать строки в файлах pdf, используя pdftotext (не pdfgrep), используя функцию bash и передавая ей строку выбора. Строка должна быть способна обрабатывать специальные символы, как минимум, пробелы. Как пустая командная строка, она отлично работает в оболочке bash и демонстрирует, что я хочу сделать.
find . -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "Air France"' \; 2>/dev/null
Но если я помещу следующий код в функцию оболочки bash, я не могу получить это на работу.
function pdfsearch () { find . -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color '$1' ' \; 2>/dev/null }
Я ссылаюсь как
pdfsearch 'Air France' and also trying pdfsearch "Air France"
, который просто дает PDF-файлы, содержащие "Air", но не "Air France"
Я также пытался использовать $ @, а также shopt -s варианты extglob et c et c. Благодарен за помощь, когда я ошибаюсь.