Re: Lidt korn shell scripting [array]

From: Dennis Decker Jensen (none@dennisdjensen--tiscali.dk.lh.bsd-dk.dk)
Date: Fri 07 Oct 2005 - 17:52:43 CEST


Date: Fri, 7 Oct 2005 17:52:43 +0200
From: Dennis Decker Jensen <none@dennisdjensen--tiscali.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: Lidt korn shell scripting [array]

On Fri, Oct 07, 2005 at 12:27:17AM +0200, per engelbrecht wrote:
> Lasse H.Petersen wrote:
> >Det du *vil* er så vidt jeg kan se at producere en find som på en gang
> >traverserer dit træ og finder alle filer der ender på et af de angivne
> >TLDer,
> >så du ikke skal traversere hele træet en gang for hver TLD.
>
> Korrekt.

Find(1) kan bruges med -regex, så noget i stil med dette kunne også være en
løsning:

find $TLDDIR -type f -regex ".*\.\(dk\|se\|uk\|de\)$"

Hvorvidt du så kan ekspandere et array som en række disjunkte
alternativer i et regulært udtryk, kan jeg ikke umiddelbart svare på,
men måske sed kan hjælpe der, hvis du vil lege videre.

set -A TLDS dk se uk de ru no
find $TLDDIR -type f -regex "$(echo ".*\.\(${TLDS[*]}\)" | sed "s/ /\\\|/g")"

Måske skal de indre citationstegn escapes, men jeg tvivler.

> >I stedet har find mulighed for at bruge komplekse udtryk som argument,
> >udtryk
> >som den selv fortolker. se find(1) i TFM.

;-)

/Dennis

"Some of us figured out in the 1950s that blacklists
were a bad idea. Some of us have that lesson still
ahead of us."
 -- John Gilham, talking about spam and freedom



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:53 CET