Você pode usar pcregrep , se disponível, com a opção -l , para listar apenas os nomes dos arquivos correspondentes:
pcregrep -lM '(?s)advanced_override\.begin.*PREFETCH.*advanced_override\.end' ./*
Isso pesquisa no modo de múltiplas linhas para essas duas seqüências com PREFETCH entre elas. Ele supõe que haja apenas arquivos de texto no diretório atual (se esse não for o caso, você pode usar um for loop ou find ) e também que cada arquivo contém uma única seção que começa com advanced_override.begin e termina com advanced_override.end - com várias seções, pode ser melhor usar uma visão antecipada negativa antes de PREFETCH , por exemplo:
pcregrep -lM '(?s)advanced_override\.begin(?:(?!advanced_override\.end).)*PREFETCH.*advanced_override\.end' ./*