find . -name "*.txt" -exec wc -l '{}' \; | sort -n
você pode aprender o tamanho da linha e depois classificá-los com um único liner.
Preciso contar o número de linhas em arquivos x e comparar quais têm mais.
O que eu fiz só pega dois arquivos e os compara. Alguma idéia de como fazer x quantidade de arquivos?
echo Enter the filename read fn
echo Enter another file read fn1
for WORD in $(cat $fn) do
echo "$WORD" done | wc -l
for WORD in $(cat $fn1) do
echo "$WORD" done | wc -l
if (cat $fn | wc -l > cat $fn1 | wc -l) then
echo First file has more lines than second file else if (cat $fn1 | wc -l > cat $fn | wc -l) then
echo Second file has more lines than first file.
fi
find . -name "*.txt" -exec wc -l '{}' \; | sort -n
você pode aprender o tamanho da linha e depois classificá-los com um único liner.
wc -l * | head -n -1 | sort | tail -1 | cut -d ' ' -f 3
Isso lhe dará o nome do arquivo com o maior número de linhas
Basta nomear todos os arquivos que você deseja comparar e classificar por tamanho (-numeric):
wc -l a.html b.html c.html | sort -n
find . -name '*txt' | xargs wc -l | sort -n
Na minha máquina, isso foi mais rápido que a versão -exec
.
Tags bash text-processing