Quantas linhas de código existem neste arquivo?

0

Estou tentando descobrir quantas linhas de código eu tenho para arquivos que terminam em * .pp

 find . -name *.pp -type f  | wc -l
  39

Eu sei que tenho 39 arquivos, como posso descobrir quantas linhas de código esses 39 arquivos contêm?

    
por spuder 12.02.2014 / 01:08

4 respostas

3

Experimente esta versão:

$ find . -iname "*.pp" -type f  -exec wc -l {} +

Veja um exemplo usando .cpp files:

$ find . -iname "*.cpp" -type f -exec wc -l {} +
  229 ./jruby-launcher-1.0.7-java/utilsfuncswin.cpp
  269 ./jruby-launcher-1.0.7-java/utilsfuncs.cpp
   84 ./jruby-launcher-1.0.7-java/jrubyexe.cpp
   85 ./jruby-launcher-1.0.7-java/unixlauncher.cpp
  250 ./jruby-launcher-1.0.7-java/platformlauncher.cpp
  593 ./jruby-launcher-1.0.7-java/argparser.cpp
  452 ./jruby-launcher-1.0.7-java/jvmlauncher.cpp
   77 ./jruby-launcher-1.0.7-java/jruby.cpp
 2039 total

Acredito que se você tiver mais arquivos do que caberá em uma única chamada de linha de comando para wc , ele fornecerá um total por cada chamada, mas isso poderá ser modificado para totalizar os totais, se necessário.

    
por 12.02.2014 / 01:32
2

O seguinte fará o trabalho

find . -name *.pp -type f -exec wc -l {} \;
    
por 12.02.2014 / 01:11
0

O que há de errado em usar o comando wc por conta própria ?!
wc -l *.pp produziria o resultado esperado (se todos os arquivos estiverem na mesma pasta, embora você possa expandi-lo fazendo wc -l FolderA/*.pp FolderB/*.pp )
E se você estiver apenas após o grandtotal, sem resultados de arquivo individuais:
find . -name "*.pp" -type f -exec cat {} + | wc -l

    
por 23.03.2016 / 11:12
0

O @spuder tentou usar wc neste comando para contar "* .pp "arquivos:

find . -name *.pp -type f  | wc -l

Existem alguns problemas:

  • a expressão glob deve ser citada para que seja passada para wc
  • wc não abre os nomes de arquivo passados como entrada e conta aqueles
  • wc está contando o total de linhas no arquivo.

OP não explicou quais eram os arquivos. Existem algumas possibilidades, mais obscuras do que as que aparecem no perfil do OP . Dado esse perfil, o sufixo ".pp" refere-se aos arquivos Puppet, que são essencialmente uma declaração de metadados na sintaxe do Ruby. Esses arquivos podem ter comentários (começando com # ) e linhas em branco.

A interpretação usual de linhas de código ignora essas. Se você quer linhas de código físicas (total linhas ignorando comentários e linhas em branco) ou fonte linhas de código (o número de declarações ) depende de quão exigente você quer ser.

A sintaxe do Puppet é mais complicada do que isso (também permite comentários no estilo C e cita strings), mas por exemplo, aqui está um filtro muito simples que apara # comentários e linhas em branco (usando o examples diretório do Puppet 2.7.10)

find . -type f -name "*.pp" -exec sed -e '/^[[:space:]]*#/d' -e '/^[[:space:]]*$/d' {} + |wc -l
 429

em contraste com não filtrado:

find . -type f -name "*.pp" -exec cat {} + |wc -l
477 

Leitura adicional:

por 29.03.2016 / 10:57

Tags