Quantas linhas existem em cada arquivo.
Use wc
, originalmente para contagem de palavras, acredito, mas ele pode fazer linhas, palavras, caracteres, bytes e o maior comprimento de linha. A -l
opção diz para contar linhas.
wc -l <filename>
Isso produzirá o número de linhas em:
$ wc -l /dir/file.txt
32724 /dir/file.txt
Você também pode canalizar dados para wc
:
$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63
Quantas linhas estão no diretório
Experimentar:
find . -name '*.pl' | xargs wc -l
outro one-liner:
( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l
BTW, o wc
comando conta novos códigos de linhas, não linhas. Quando a última linha do arquivo não termina com o novo código de linha, isso não conta.
Você pode usar grep -c ^, exemplo completo:
#this example prints line count for all found files
total=0
find /path -type f -name "*.php" | while read FILE; do
#you see use grep instead wc ! for properly counting
count=$(grep -c ^ < "$FILE")
echo "$FILE has $count lines"
let total=total+count #in bash, you can convert this for another shell
done
echo TOTAL LINES COUNTED: $total
Quantas linhas no total
Não tenho certeza de que entendi que você solicitou corretamente. por exemplo, isso produzirá resultados no seguinte formato, mostrando o número de linhas para cada arquivo:
# wc -l `find /path/to/directory/ -type f`
103 /dir/a.php
378 /dir/b/c.xml
132 /dir/d/e.xml
613 total
Como alternativa, a saída apenas do número total de caracteres de nova linha sem o arquivo por arquivo conta para o seguinte comando pode ser útil:
# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
613
Mais importante, eu preciso disso em "formato legível por humanos", por exemplo. 12.345.678 em vez de 12345678
O Bash possui uma função printf integrada em:
printf "%0.2f\n" $T
Como sempre, existem muitos métodos diferentes que podem ser usados para obter os mesmos resultados mencionados aqui.