Este comando chegou perto:
locate -r "$PWD.*\.c$" | xargs -0 -I{} test -f {} && echo "regular file" | wc -l
Problemas:
- Você está usando uma entrada delimitada nul com xargs, mas
locatenão está fornecendo uma saída delimitada nula. - O
&& echoé executado para o canallocate | xargscomo um todo e não para as execuções individuais detest
Tente:
locate -0r "$PWD.*\.c$" | xargs -0 -I{} sh -c 'test -f "$1" && echo "regular file"' _ {} | wc -l
- habilitando a saída delimitada nul por
locatecom-0 - combinando
testeecho(isso pode ser melhorado com um loop sobre argumentos emsh -c, para que vários arquivos sejam processados por invocação desh)
Ainda há o problema de operadores regex aparecendo em $PWD .