In for-Schleife Dateien/Elemente ausschließen

30/09/2007 - 12:28 von Thomas Wiedmann | Report spam
Hallo,

wie kann man aus einer for-Schleife in der bash bestimmte Dateien/Elemente
ausschließen?

Konkretes Beispiel:
for i in (*.xml); do echo $i; done

Hier möchte ich die for-Schleife über alle Dateien, die auf .xml enden,
außer z. B. fileX.xml, fileY.xml und fileZ.xml, ausführen.
Natürlich ginge das auch hier über ein geeignetes if test-Statement am
Anfang des do-Blocks.
Mich interessiert aber, ober man durch eine geeignete for-Konstruktion diese
bestimmten Dateien aus dem Array (*.xml) ausschließen kann; falls ja, wie
geht das?


Danke für alle guten Tips.

Thomas Wiedmann
 

Lesen sie die antworten

#1 Hauke Laging
30/09/2007 - 12:38 | Warnen spam
Thomas Wiedmann schrieb am Sonntag 30 September 2007 12:28:

Hier möchte ich die for-Schleife über alle Dateien, die auf .xml
enden, außer z. B. fileX.xml, fileY.xml und fileZ.xml, ausführen.
Natürlich ginge das auch hier über ein geeignetes if test-Statement
am Anfang des do-Blocks.
Mich interessiert aber, ober man durch eine geeignete
for-Konstruktion diese bestimmten Dateien aus dem Array (*.xml)
ausschließen kann; falls ja, wie geht das?



Auf bash bezogen:

Na, ja, "geeignet" im Sinne von "geht zwar, ist aber die verkrüppelte
Lösung"?

Du kannst da jeden pathname-expansion-Ausdruck verwenden, also
speziell die zu
shopt -s extglob
gehörigen. Aber auch die kochen nur mit Wasser; insbesondere können
sie AFAIK nur entweder in- oder exkludieren.

*.xml \ foo.xml

geht also nicht. Wenn sowieso nur *.xml vorhanden ist, geht das wohl
über !(foo.xml|bar.xml)

Aber, hmm, es gibt da ja auch noch $GLOBIGNORE. Das könnte man für
jeden Aufruf geeignet initialisieren. Und Gott bewahre, wenn man
vergisst, es zurückzusetzen...


CU

Hauke
http://www.hauke-laging.de/ideen/
http://www.hauke-laging.de/software/
http://zeitstempel-signatur.hauke-laging.de/
Wie können 59.054.087 Leute nur so dumm sein?

Ähnliche fragen