Pelo que entendi, você deseja listar arquivos que contenham ambos "keyword1" e "keyword2". Para fazer isso, você pode usar dois testes -exec
da seguinte maneira:
find . -name "*.xml" -exec grep -iq keyword1 {} \; -exec grep -iH keyword2 {} \;
Isso executará o segundo grep
condicionalmente - se o primeiro retornar verdadeiro. A opção -q
impede a saída do primeiro grep
, pois listaria todos os arquivos que incluem apenas "keyword1".
Como a opção -H
exibe a linha correspondente junto com o nome do arquivo, é provável que você queira usar -l
. Então
find . -name "*.xml" -exec grep -iq keyword1 {} \; -exec grep -il keyword2 {} \;
Isso produzirá resultados semelhantes aos sugeridos por Caleb, mas sem a necessidade de -print
adicional.