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
locate
não está fornecendo uma saída delimitada nula. - O
&& echo
é executado para o canallocate | xargs
como 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
locate
com-0
- combinando
test
eecho
(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
.