Atualmente não estou em uma máquina Linux. O comando a seguir produziria o resultado desejado?
ls | grep ".pdf" | wc
Responder1
Não, ".pdf" é demais, por exemplo, foo.pdfa
e bpdf
.
Além disso, mesmo que você não tenha arquivos correspondentes incorretamente, sem opções gera o número de linhas, palavras e bytes na entrada, então você obteria dois números a mais do que wc
está interessado. grep
poderia fazer ls | grep -E "\.pdf$" | wc -l
, mas a menos que você tenha muitos arquivos PDF nesse diretório, grep não é necessário, você pode sobreviver com ls *.pdf | wc -l
.
Adicionado mais tarde, quando pensei nisso:
Além disso, grep
pode-se fazer a contagem, então se grep
estiver no mix, basta adicionar a -c
opção grep em vez de canalizar a saída para wc -l
, então ls | grep -cE "\.pdf$"
ou se quiser evitar a contagem de diretórios chamados <something.pdf>
: ls -l | grep -cE "^-.*\.pdf$"
.
Responder2
Você deveria usar
ls | grep ".pdf" | wc -l
O -l
parâmetro contará apenas o número de linhas resultantes, enquanto sem -l
você também obteria outras contagens, como contagem de nova linha, palavra e byte. Observe que isso contará nomes de arquivos (e também pastas) que contêm a cadeia de caracteres ".pdf".
Para contar apenas os arquivos que terminam com .pdf
, é melhor usar find
:
find . -type f -name "*.pdf" | wc -l
Responder3
Seu shell deve ser capaz de fazer a filtragem:
ls *.pdf | wc -l
ou você precisa ter certeza de que corresponde ao final dos nomes dos arquivos:
ls | grep "*\.pdf$" | wc -l
(observe o cifrão).
Nota: ambos também corresponderãodiretóriosterminando em ".pdf", se houver.
Nota 2: ls
deve se comportar como se você tivesse dado a opção -1
assim que canalizar sua saída. Caso contrário, adicione esta opção.