Contar o número de arquivos e subdiretórios de um diretório
Sempre tive dificuldade de conseguir este tipo de informação facilmente, por isto resolvi fazer este pequeno script. Simples mas às vezes bastante útil.
Descrição
Sempre tive dificuldade de conseguir este tipo de informação facilmente, por isto resolvi fazer este pequeno script. Simples mas às vezes bastante útil.
Versões atualizadas deste script
#!/bin/bash
DIR="$1"
# Caso nao seja digitado nenhum diretorio,
# Sera usado o diretorio corrente por padrao
if ! [ $DIR ]
then
DIR='.'
fi
NUMARQ=0
NUMDIR=0
lista(){
for ARQ in $( ls $1/ )
do
[ -d "$1/$ARQ" ] && { NUMDIR=$(($NUMDIR+1)); lista $1/$ARQ; }
[ -f "$1/$ARQ" ] && NUMARQ=$(($NUMARQ+1))
done
}
lista $DIR
echo "Existem $NUMARQ arquivos e $NUMDIR diretorios em '$DIR'."
Achei um erro no seu script amigo, em casos de pastas/arquivos com nomes compostos!
Segue o teste:
#primeiro um ls
gabriel@home:~/teste$ ls -l
total 4
drwxr-xr-x 2 gabriel gabriel 4096 2012-03-10 07:12 abacate azedo
#perceba que existe um nome de uma pasta "abacate azedo".
#seu script
gabriel@home:~/teste$ /home/gabriel/lista.sh /home/gabriel/teste
Existem 0 arquivos e 0 diretorios em '/home/gabriel/teste'.
#Isso acontece pq ele testa: /home/gabriel/teste/abacate
#Depois testa: /home/gabriel/teste/azedo
E nenhum dos arquivos existe.
Uma maneira mais facil de contar isso, é com ls + grep
#lista recursivamente todo conteudo da pasta, o que for pasta ele conta:
ls -Rl $pasta | egrep -c "^d"
#lista recursivamente todo conteudo da pasta, o que for arquivo ele conta:
ls -Rl $pasta | egrep -c "^\-"