Вы можете использовать pcregrep
, если он доступен, с переключателем -l
, чтобы вывести только имена совпадающих файлов:
pcregrep -lM '(?s)advanced_override\.begin.*PREFETCH.*advanced_override\.end' ./*
Это поиск в многострочном режиме для этих двух строк с PREFETCH
между ними. Предполагается, что в текущем каталоге есть только текстовые файлы (если это не так, вы можете использовать цикл for
или find
), а также что каждый файл содержит один раздел, который начинается с advanced_override.begin
и заканчивается на advanced_override.end
- с несколькими разделами может быть лучше использовать отрицательный просмотр вперед перед PREFETCH
например:
pcregrep -lM '(?s)advanced_override\.begin(?:(?!advanced_override\.end).)*PREFETCH.*advanced_override\.end' ./*