Pular para o conteúdo

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.
Andre Costa andrecpe
Hits: 31.525 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

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.
Download conta.sh Enviar nova versão

Versões atualizadas deste script

Almir Neto

Versão 2 enviada por Almir Neto em 17/03/2012

Changelog: #!/bin/bash

DIR="$1"

# Caso nao seja digitado nenhum diretorio,
# Sera usado o diretorio corrente por padrao
if ! [ $DIR ]
then
DIR='.'
fi


NUMDIR=$(ls -lR "$DIR" | grep '^d' | wc -l)
NUMLIN=$(ls -lR "$DIR" | grep '^l' | wc -l)
NUMARQ=$(ls -lR "$DIR" | grep '^-' | wc -l)

echo "Existem $NUMDIR diretórios, $NUMLIN links simbólicos e $NUMARQ arquivos no diretório $DIR"

Download conta2.sh

Esconder código-fonte

#!/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'."

Backup das bases de dados do MySQL

Enviando arquivo via ftp

Backup diário "datado".

Baixa arquivos de Podcast

Instalar MP3 (e outros formatos) no ubuntu dapper automaticamente

#1 Comentário enviado por gricardo87 em 10/03/2012 - 07:05h
Bom dia!

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 "^\-"

#2 Comentário enviado por almirneo em 17/03/2012 - 10:52h
Bom dia André.

Conforme o comentário do Gabriel Ricardo, realmente pode ocorrer o problema citado por ele.

Fiz uma modificação no seu script e enviei para a fila de espera.

Efetuei a modificação baseado no exemplo do Gabriel Ricardo usando listagem recursiva com expressão regular.

Acrescentei a contagem para links simólicos também.

Espero ter ajudado.

Contribuir com comentário

Entre na sua conta para comentar.