shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Listar varios tipos de ficheiros


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Listar varios tipos de ficheiros
Date: Fri, 7 Apr 2006 20:29:21 -0300

Ola

On 4/7/06, Rui Luís Dias <address@hidden> wrote:
>  Precisava uma maneira simples e robusta de contar quantos ficheiros de um
>  certo tipo (ex. *.txt *.ref  *.bin ) existem numa directoria e obter o
>  resultado ( nemro deles) para uma variavel. Isto corre de modo recursivo.

Veja este exemplo
$ ls
a.txt  c.txt  e.bin  h.bin  j.mp3  l.mp3  w.mpg  y.exe
b.txt  d.bin  f.bin  i.bin  k.mp3  m.mp3  x.exe

Esta linha pode não ser a mais adequada... mas ela mostra todas as
extenções no diretorio corrente [1]
$ ls | rev | cut -d. -f1 | rev | sort | uniq
bin
exe
mp3
mpg
txt

Aqui faço um laço e uso o grep para contar as ocorrencias.
$ for i in $(ls | rev | cut -d. -f1 | rev | sort | uniq)
do occ=$( grep -c $i <(ls) )
echo "a extencao $i tem ${occ} ocorrencias"
done

a extencao bin tem 5 ocorrencias
a extencao exe tem 2 ocorrencias
a extencao mp3 tem 4 ocorrencias
a extencao mpg tem 1 ocorrencias
a extencao txt tem 3 ocorrencias

Agora só falta fazer um algoritmo pra varrer os diretorios
recursivamente, mas acho que ai vc consegue fazer alguma coisa ;-)

[1] Veja a lógica

Listo os diretorios, quero pegar tudo o que está depois do ultimo ponto
$ ls
a.txt  c.txt  e.bin  h.bin  j.mp3  l.mp3  w.mpg  y.exe
b.txt  d.bin  f.bin  i.bin  k.mp3  m.mp3  x.exe

Inverto as strings, agora quero pegar tudo o que esta ate o primero ponto
$ ls | rev
txt.a
txt.b
txt.c
nib.d
nib.e
nib.f
nib.h
nib.i
3pm.j
3pm.k
3pm.l
3pm.m
gpm.w
exe.x
exe.y

Um cut faz isso
$ ls | rev | cut -d. -f1
txt
txt
txt
nib
nib
nib
nib
nib
3pm
3pm
3pm
3pm
gpm
exe
exe

Agora inverto de novo -- elas ficam certinhas
$ ls | rev | cut -d. -f1 | rev
txt
txt
txt
bin
bin
bin
bin
bin
mp3
mp3
mp3
mp3
mpg
exe
exe

Ordeno-as
$ ls | rev | cut -d. -f1 | rev | sort
bin
bin
bin
bin
bin
exe
exe
mp3
mp3
mp3
mp3
mpg
txt
txt
txt

Depois de ordenadas, o uniq funciona bem melhor
$ ls | rev | cut -d. -f1 | rev | sort | uniq
bin
exe
mp3
mpg
txt

Tcharam ! 100% 'shell'
--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

[Prev in Thread] Current Thread [Next in Thread]