• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

contar o numero de ficheiros da minha directoria

9 mensagens neste tópico

viva malta!

ora bem, mais uma duvida, tenho de contar o numero de ficheiros da muha directoria, mas o problema residen na variavel conta.

durante o ciclo vou contando quantos ficheiros e guardando o valor na variavel conta, mas quando a mostro fora do cclo, da me 0, valor no qual ela esta inicializada, porque?

#!/bin/bash
conta=0
variavel=`pwd`
ls -l $variavel | while read linha
do
conta=$((conta+1))

done
echo "$conta"
exit 0

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Yay! Desculpem-me o Off topic, mas este tópicos são uma curte, cada vez que aparece um tópico destes aprendo a usar mais um brinquedo :(

+1 voto para simplicidade do comando do rui carlos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O comando do Rui conta tanto os ficheiros como as pastas.

Podemos corrigir isso fazendo:

ls -l | grep ^- | wc -l

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No exemplo que ela tem, também está a contar ficheiros e pastas (e links), mas não sei se era esse o objectivo ou não.

Já agora, no exemplo inicial, deve dar uma linha a mais, pois o comando ls -l, mostra primeiro uma linha que não corresponde a ficheiros (razão pela qual usei o ls -1 e não ls -l).

Relativamente à dúvida do tópico inicial, alguém sabe por que é que o valor da variável conta passa para 0 quando sai do ciclo? Embora haja outras formas de resolver o problema, também não percebo por que é que isso acontece...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mais uma possibilidade:

$ find . -type f -maxdepth 1 | wc -l

EDIT:

mais outra possibilidade:

#!/bin/bash
for ficheiro in *; do
    conta=$((conta+1));
done
echo "$conta"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiz uma pesquisa por "shellscript variable scope" e descobri o seguinte.

Ao usar um pipe, abre-se outra shell e as variáveis não são preservadas.

Experimentei por a variável conta como global usando o export mas não funcionou por algum motivo que desconheço ;)

Alguma outra sugestão

Já agora fica aqui o link onde li isso:

http://www.kilala.nl/Sysadmin/index.php?id=741

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora