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: Eliphas Levy Theodoro
Subject: Re: [shell-script] Otimização de script
Date: Fri, 28 Dec 2001 08:57:25 -0200 (BRST)

rodrigovianarj, @ 00:37:

>    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

Primeiramente, deixar tudo em uma linha só dificulta a leitura e
entendimento, não vai deixar muito mais rápido... Se precisar de rapidez
a esse ponto, faça em C ou ASM ';)


#!/bin/bash
#TodoAqueleBlaBlaBlaQueTemAliEmCima
filtro="quequeisso"
arqs=`ls -l | grep -Ec "^-([^ ]+ +){8}$filtro`
dirs=`ls -l | grep -Ec "^d([^ ]+ +){8}$filtro`
echo "Existe(m) $arqs arquivo(s) e $dirs subdiretorio(s) contendo o nome
$filtro nesse diretorio."


Usando o grep (a opção -E serve pra poupar algumas barras invertidas :),
dá pra fazer tudo que você fez com cut/grep/cut. Veja:

^-([^ ]+ +){8}$filtro

comecando com '-';
inicia buffer;
 contendo um não-espaço uma ou mais vezes;
 e um espaço uma ou mais vezes;
fim do buffer;
oito vezes (esse oito vezes referencia o buffer que vem logo atrás);
seguido do conteúdo da variavel 'filtro'.

Sem a opção -E ia ficar assim:

^-\([^ ]\+ \+\)\{8\}$filtro

Bem mais chatinho de entender, não? ':)

Falous,
-- 
Eliphas

Anyone sending unsolicited bulk email (UBE, SPAM) to this address will
be charged a $25 handling fee plus a $5 network traffic fee per
started kilobyte. By extracting my address from this message or its
header, you agree to these terms.
Nevertheless, spammers trying to auto-extract addresses from this
message will definitely want to include address@hidden, address@hidden,
and address@hidden



reply via email to

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