Número de arquivos em uma pasta, fornece resultados diferentes

3

Para contar o número de arquivos em uma pasta que estou usando:

ls -l | wc -l

mas isso dá mais 1 que:

ls | wc -l

O que causa isso? Além disso, o que os três números representam para

ls | wc

    
por wprins 03.08.2016 / 17:15

2 respostas

8

Quando você usa ls -l , não está obtendo apenas uma lista de todos os arquivos no diretório especificado, um arquivo por linha, mas também obtém uma linha total [BLOCKS] na parte superior, que exibe quantos bloqueios de sistema de arquivos os arquivos nesta pasta ocupam no total. Mais informações sobre essa linha podem ser encontradas em O que é esse “total” na primeira linha depois de ls -l? em Estouro de pilha.

Para obter apenas uma linha por arquivo (e vice-versa), você pode usar ls -1 , que não adiciona informações extras.

A partir da página de manual de wc :

Print  newline,  word,  and  byte counts for each FILE

Assim, o primeiro número na saída de wc é o número de linhas, o segundo é o número de palavras (" Uma palavra é uma seqüência de caracteres não-zero-comprimento delimitada por espaço em branco. ") e o último número é o tamanho da entrada em bytes.

Você pode ler as páginas de manual (páginas de manual) da maioria dos comandos digitando man COMMAND no terminal, por exemplo. man ls ou man wc .

    
por Byte Commander 03.08.2016 / 17:27
4

Veja este link sobre o porquê de tentar processar (analisar) a saída de ls é arriscado.

Em vez disso, obtenha o número de links para o diretório (consulte man stat ), subtraia 2 (para as entradas . e .. ).

dir=$PWD
Nfiles=$(( $(stat --printf=%h $dir) - 2 ))

Nota: isso conta arquivos e diretórios em $dir . Contar os dois separadamente é um problema diferente.

    
por waltinator 03.08.2016 / 19:10