Michael Schröpl: ksh-script und regexp

Beitrag lesen

Hi Christoph,

Ich lese die einzelnen Dateinamen mittels
for file in $(find $verzeichnis -type f)
do
...
done
aus und will einen Treffer, sonbald ein Großbuchstabe drin vorkommt.

Hm. Also die Denkweise von Perl auf eine Shell zurück zu übertragen funktioniert in einigen Fällen nicht (sonst hätte man Perl ja gar nicht erfinden müssen).

Zwei Möglichkeiten fallen mir ein:
a) Löse das Problem komplett mit "find" (der Parameter "-name" darf auch pattern enthalten - ob das für Deinen Fall ausreicht, kann ich allerdings spontan nicht sagen).
b) Pipe die find-Ausgabeliste in ein nachfolgendes Filterkommando ("egrep" wurde bereits genannt) oder binde sie via "xargs" an ein solches (oder binde mit "-exec" ein Kommando an die "find"-Ausgabe ... da gibt es viele verschiedene Möglichkeiten).

Würdest Du die rekursive Verzeichnistraversierung von "find" nicht benötigen, dann wäre an dieser Stelle auch direkt ein regular expression möglich.

Beachte in jedem Fall, daß Perl regular expressions und shell regular expression nicht syntaxkompatibel sind! Da mußt Du umdenken ... (".*" in Perl ist "*" in ksh, '.' ist '?' etc.)

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.