Algumas alternativas:
Com o GNU sed
:
sed -sn '$=' ./*.txt
(note que ele não informará o número de arquivos vazios e (ao contrário de wc -l
), contará dados espúrios após o último caractere de nova linha como uma linha extra).
Padrões curinga como *.txt
, por padrão, não incluem arquivos ocultos.
Com o GNU awk
:
awk 'ENDFILE{print FNR}' ./*.txt
Desta vez, você receberá um 0
para arquivos vazios. A mesma nota sobre dados espúrios do GNU sed
.
$ seq 10 > a.txt; : > b.txt; printf spurious > c.txt; seq 20 > .hidden.txt; echo test > $'a\n3 4.txt'
$ wc -l ./*.txt
1 ./a
3 4.txt
10 ./a.txt
0 ./b.txt
0 ./c.txt
11 total
$ wc -l ./*.txt | awk '/\//{print $1}'
1
10
0
0
$ sed -ns '$=' ./*.txt
1
10
1
$ awk 'ENDFILE{print FNR}' ./*.txt
1
10
0
1
Recursivamente, se você quiser uma lista classificada por nome de arquivo, com zsh
ou ksh -o globstar
ou bash -O globstar
ou yash -o extended-glob
:
wc -l .//**/*.txt | awk '/\/\//{print $1}'
sed -ns '$=' ./**/*.txt
awk 'ENDFILE{print FNR}' ./**/*.txt