Existe uma maneira de descobrir o número de linhas de uma saída de comando?

Existe uma maneira de descobrir o número de linhas de uma saída de comando?

Estou tentando comparar saídas de comando entre dois servidores. Quero descobrir o número de linhas da saída de comandos como ls -l. Tem algum jeito de fazer isso? Até agora não encontrei nada.

Responder1

Para alguém, isso pode ser mais fácil de lembrar:

ls -l | grep . -c

Observe que grep e wc contarão linhas auxiliares como total 32044ou ou ./dirname:. Para evitar isso, especialmente na saída recursiva, ls -lRtente isto:

find . -type f | grep . -c

onde first .é o caminho do diretório e -type fsignifica que findlistará apenas os arquivos. Se você precisar de todos os tipos (incluindo diretórios, soquetes, etc.), basta omitir -type f.

Observação: wc -lCONTA as linhas vazias (apenas '\n') enquanto grep . -c- NÃO.

Responder2

Você deveria usar wc:

$ wc -l .emacs.d/init.el 
73 .emacs.d/init.el

De man wc:

NAME
       wc - print newline, word, and byte counts for each file

SYNOPSIS
       wc [OPTION]... [FILE]...
       wc [OPTION]... --files0-from=F
       ....
       -l, --lines
              print the newline counts

wcfaz parte do GNU coreutils, você pode tê-lo na maioria Unix-likedos sistemas.

Responder3

você pode canalizar seu comando para wccomando:

ls -l | wc -l

Responder4

Se você quiser comparar uma contagem dos arquivos processados ​​por qualquer um dos servidores, poderá fazer isso de maneira confiável, como:

ls -aR1qp ./ | grep -cv '/\|^$'

Isso lista recursivamente todos os arquivos - não diretórios - um por linha, inclusive .dotfilesabaixo do diretório atual, usando shell globs conforme necessário para substituir caracteres não imprimíveis. grepfiltra qualquer listagem de diretório pai ou ..linhas */em branco - portanto, deve haver apenas uma linha por arquivo - cuja contagem total grepretorna para você. Se você quiser que diretórios filhos também sejam incluídos:

ls -aR1qp ./ | grep -cv '^\.\{1,2\}/\|^$'

ou...

ls -AR1q ./ | grep -cv '/\|^$'

Observe que a -Aopção lsé POSIX na versão mais recente.

informação relacionada