Se eu entendi sua meta corretamente, o seguinte fará o que você deseja:
find ./recup*/ -name '*.txt' -exec grep -qi "searchPattern" {} \; -exec cat {} \; > outputfile.txt
Isso procurará todos os arquivos *.txt em ./recup*/ , teste cada um por searchPattern , se corresponder a cat do arquivo. A saída de todos os arquivos cat ed será direcionada para outputfile.txt .
Repita para cada padrão e arquivo de saída.
Se você tiver um número muito grande de diretórios correspondentes a ./recup* , poderá acabar com argument list too long error . A maneira simples de contornar isso é fazer algo assim:
find ./ -mindepth 2 -path './recup*.txt' -exec grep -qi "searchPattern" {} \; -exec cat {} \; > outputfile.txt
Isto irá corresponder ao caminho completo. Então, ./recup01234/foo/bar.txt será correspondido. O -mindepth 2 é para que não corresponda a ./recup.txt ou ./recup0.txt .