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

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

RE: [shell-script] Otimização de script


From: Julio Cezar Neves - DISB.O
Subject: RE: [shell-script] Otimização de script
Date: Fri, 28 Dec 2001 12:26:45 -0300

Estou de acordo com o que o Eliphas falou. "Colocar o programa em uma única
linha dificulta muito sua legibilidade". O que ele não falou é que o uso de
expressões regulares acelera o processamento, porém tb dificulta a
legibilidade. Meu conselho é que vc, que está iniciando, tente desenvolver
os programas mais fáceis e legíveis possível. Com o tempo, vc verá que o
Shell é muito mais do que vc viu no livro. O livro que vc está estudando,
pretende te dar as ferramentas para vc poder fazer os programas em Shell, de
forma fácil de entender e aplicar. Veja só as minhas sugestões:

1º Caso: neste caso, vc executa o programa passando como parâmetro ($1) a
cadeia de caracteres que vc deseja encontrar no nomes dos arquivos. Ele tem
um furo: ele procura a cadeia em qq lugar do ls -l. Repare:

#!/bin/sh

Arqs=`ls -l | grep '^-' | grep -c $1`
Dirs=`ls -l | grep '^d' | grep -c $1`
echo Existem $Arq Arquivos e $Dirs Diretorios cujos nomes contem $1

2º Caso: como no 1º vc pesquisa pela cadeia recebida por parâmetro, porém,
esta pesquisa é feita somente no nome do arquivo. Veja só:

#!/bin/sh

Arqs=`ls -l | grep '^-' | tr -s " " " " | cut -f9 -d " " | grep -c $1`
Dirs=`ls -l | grep '^d' | tr -s " " " " | cut -f9 -d " " | grep -c $1`
echo Existem $Arqs Arquivos e $Dirs Diretorios cujos nomes contem $1

Neste caso, após os greps onde procuro por arquivos e por diretórios, eu
faço um tr -s que serve para transformar todos cadeias com múltiplos espaços
em branco, em cadeias com somente um branco e assim, corto o 9º pedaço cujo
separador é branco, isto é, o nome do arquivo. Somente então, pesquiso pela
cadeia passada como parâmetro.

3º Caso: Neste caso, o parâmetro passado será *exatamente* o nome do arquivo
ou diretório:

#!/bin/sh

Arqs=`ls -l | grep '^-' | tr -s " " " " | cut -f9 -d " " | grep -c "^$1$"`
Dirs=`ls -l | grep '^d' | tr -s " " " " | cut -f9 -d " " | grep -c "^$1$"
echo Existem $Arqs Arquivos e $Dirs Diretorios cujos nomes contem $1

Repare agora que o $1 (nome do arquivo), esta entre ^e $, isto é, ele deve
ser o começo e tb o fim da cadeia, isto é, a própria cadeia.

Rodrigo, boa sorte! Grande Eliphas eu tava brincando, tá???

Feliz Ano Novo com carteira cheia para todos!

Julio Cezar Neves.

> -----Original Message-----
> From: rodrigovianarj [mailto:address@hidden]
> Sent: Thursday, December 27, 2001 9:37 PM
> To: address@hidden
> Subject: [shell-script] Otimização de script
> 
> 
>    Olá amigos.
> 
>    Estou estudando programação shell p/ o desenvolvimento de scripts 
> e gostaria da opinião de vcs.
>    Alguém poderia me informar se tem como otimizar o script abaixo 
> criado por mim ???
>    Obrigado.
> 
> 
> 
> #!/bin/bash
> #Este script tem a simples funcao de listar a quantidade de
> #diretorios e arquivos contendo o nome quequeisso
> #de um determinado diretorio.
> #Desenvolvido por Rodrigo Viana de Oliveira
> #address@hidden
> #ICQ 68247042
> echo Existe\(m\) `ls -l | grep '^-' | cut -c57-66 > pesq1 | grep -c 
> '^quequeisso' pesq1` arquivo\(s\) e `ls -l | grep '^d' | cut -c57-66 
> > pesq2 | grep -c '^quequeisso' pesq2` subdiretorio\(s\) contendo o 
> nome quequeisso neste diretorio.
> rm -f pesq1
> rm -f pesq2
> 
> 
> 
> 
> Sair da lista: address@hidden
> Banco Dados:   http://www.egroups.com/group/shell-script 
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://br.yahoo.com/info/utos.html 



reply via email to

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