Назад | Перейти на главную страницу

Поиск файлов, содержащих текст (не строку) в bash

Как мне найти файлы, содержащие определенный текст, содержащий символы новой строки и множество других символов, всевозможные кавычки и обратные косые черты с помощью терминала?

grep отчасти основано на строках, поэтому сопоставление с границами строк может быть проблематичным. Если у вас есть свободная память, сравните ее со всем файлом, например, perl:

$ (echo fish; echo cat; echo dog; echo frog) \
  | perl -0777 -nE 'say $1 if m/(cat.dog)/s'

Бит «всевозможные кавычки и обратная косая черта», скорее всего, будет в основном избегать правил интерполяции оболочки, например через '\'' типа трюки или посмотреть ascii(7) а затем в perl используйте соответствующий \047 или \x52 или что угодно, если необходимо. Не хватает памяти для загрузки файла, strings(1) может сначала использоваться для уменьшения объема данных для поиска.