Isso pode ser feito através de
find dir -type f -exec grep -H '+ ID$' {} +
Isso localizará todos os arquivos regulares dentro ou abaixo do diretório dir e, em seguida, executará grep -H '+ ID$' em lotes do maior número possível deles. O resultado conterá o nome do arquivo correspondente à expressão regular e as linhas do arquivo correspondente.
Para obter apenas os nomes dos arquivos, use -l no lugar de -H com grep e, para obter apenas as linhas correspondentes, use -L .
A expressão regular + ID$ corresponderá a qualquer linha em um arquivo que contenha a string exata + ID no final da linha.
Ou, sem find , mas com um grep que pode recorrer a subdiretórios:
grep -R '+ ID$' dir
Em sistemas com grep que não faz -H (essa é uma opção não padrão), você pode usar
find dir -type f -exec grep '+ ID$' /dev/null {} +
Se você quiser apenas as linhas correspondentes (e nenhum nome de arquivo) em um sistema como este, cat os arquivos juntos e grep:
find dir -type f -exec cat {} + | grep '+ ID$'