Para obter cada nome de arquivo impresso na saída e, ENTÃO, ter os resultados do grep correspondentes àquele arquivo impresso depois, você pode agrupar o -exec foo {} | grep
pipe em um shell:
find . -name '*.o' -type f -print -exec sh -c 'foo "$1" | grep "bar"' sh {} \;
Para fazer com que o argumento -H
do grep funcione com a entrada padrão, se a sua versão de grep
suportar a opção --label=
, você poderia fazer
find . -name '*.o' -type f -exec sh -c '
foo "$1" | grep -H --label="$1" "bar"
' sh {} \;
ou (se a sua localização suportar a alternativa +
de vários argumentos para \;
):
find . -name '*.o' -type f -exec sh -c '
for f; do foo "$f" | grep -H --label="$f" "bar"; done
' sh {} +