Conte o número de linhas nos arquivos e depois compare o que tem mais (BASH) [duplicado]

1

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
    
por Gilles 26.02.2012 / 21:20

4 respostas

4

find . -name "*.txt" -exec wc -l '{}' \; | sort -n

você pode aprender o tamanho da linha e depois classificá-los com um único liner.

    
por 26.02.2012 / 21:38
1
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

    
por 26.02.2012 / 21:41
1

Basta nomear todos os arquivos que você deseja comparar e classificar por tamanho (-numeric):

wc -l a.html b.html c.html | sort -n
    
por 27.02.2012 / 01:05
1
find . -name '*txt' | xargs wc -l | sort -n

Na minha máquina, isso foi mais rápido que a versão -exec .

    
por 16.10.2014 / 15:57