Qualquer que seja o xargs , ele é seu processo filho direto, não há shell entre eles. xargs não tem noção de sua função. Também não tem conceito de builtins de shell.
Para que funcione:
- ou exporte sua função (com
export -f grepc) e façaxargsexecutar um shell de uma maneira um pouco complicada:… | xargs bash -c 'grepc "$@"' bash - ou melhor converta sua função em um script, torne o arquivo executável e coloque-o onde seu
$PATHaponta (ou ajuste a variável); entãogrepcserá um arquivo exargspoderá executá-lo.