Comando para imprimir o número de arquivos * .pdf em um diretório escolhido [duplicado]

0

Atualmente não estou em uma máquina Linux. O seguinte comando produziria meu resultado desejado?

ls | grep ".pdf" | wc

    
por KOB 21.05.2016 / 15:13

3 respostas

1

Não, ".pdf" é muito complicado, por exemplo, foo.pdfa e bpdf .

Além disso, mesmo que você não tenha arquivos correspondentes de forma errada, wc sem opções gerará o número de linhas, palavras e bytes na entrada, para que você obtenha dois números a mais do que o seu interesse. quer grep no mix, você poderia fazer ls | grep -E "\.pdf$" | wc -l , mas a menos que você tenha muitos arquivos pdf nesse diretório, o grep não é necessário, você pode obter ls *.pdf | wc -l .

Adicionado mais tarde, quando pensei nisso:

Além disso, grep pode fazer a contagem, então se grep estiver na mistura, basta adicionar a opção -c ao grep em vez de enviar a saída para wc -l , então ls | grep -cE "\.pdf$" ou se você quiser evite contar diretórios denominados <something.pdf> : ls -l | grep -cE "^-.*\.pdf$" .

    
por 21.05.2016 / 15:27
2

Seu shell deve poder fazer a filtragem:

ls *.pdf | wc -l

ou você precisa verificar se corresponde ao final dos nomes dos arquivos:

ls | grep "*\.pdf$" | wc -l

(observe o cifrão).

Observação: os dois também corresponderão aos diretórios que terminam em ".pdf", se houver.

Observação 2: ls deve se comportar como se você tivesse atribuído a opção -1 assim que você canalizasse sua saída. Caso contrário, adicione este comutador.

    
por 21.05.2016 / 15:22
1

Você deve usar

ls | grep ".pdf" | wc -l

O parâmetro -l contará apenas o número de linhas resultantes, enquanto sem o -l você obterá outras contagens, como nova linha, palavra e contagem de bytes. Observe que isso contará nomes de arquivos (e pastas também) que contêm a cadeia ".pdf" de caracteres.

Para contar apenas os arquivos que terminam com .pdf , é melhor usar find :

find . -type f -name "*.pdf" | wc -l
    
por 21.05.2016 / 15:23

Tags