Tente isso e peça desculpas por ser óbvio:
cat *.cs | wc -l
ou, com git:
git ls-files -z ${1} | xargs -0 cat | wc -l
Se você realmente deseja que a saída pareça com wc
output, com contagens individuais e uma soma, você pode usar awk
para adicionar as linhas individuais:
git ls-files -z ${1} | xargs -0 wc -l |
awk '/^[[:space:]]*[[:digit:]]+[[:space:]]+total$/{next}
{total+=$1;print}
END {print total,"total"}'
Isso não será tão bom quanto wc
, caso isso seja importante para você. Para fazer isso, você precisaria ler a entrada inteira e salvá-la, calculando o total e, em seguida, usar o total para calcular a largura do campo antes de usar essa largura de campo para imprimir uma saída formatada das linhas lembradas. Como projetos de renovação em casa, os scripts awk
nunca são realmente concluídos.
(Nota aos editores entusiastas: a expressão regular na primeira condição awk
é caso haja um arquivo cujo nome comece com "total" e um espaço; caso contrário, a condição poderia ter sido muito mais simples. $2 == "total"
.)