Ausschließen von bestimmten Dateinamen von der shell-globbing
Möchte ich excluse einen bestimmten Dateinamen (z.B. fubar.log
) aus einer shell (bash) Platzhalter-Zeichenfolge, *.log
. Nichts von dem, was ich versuchte zu funktionieren scheint, da Platzhalter verwenden nicht die standard-RE-set.
Test Fall : das Verzeichnis enthält
fubar.log
fubaz.log
barbaz.log
text.txt
und nur fubaz.log barbaz.log
muss erweitert werden durch die glob.
- möglich, Duplikat der Wie kann ich die inverse oder negative wildcards beim pattern-matching in einem unix - /linux-shell? Dies ist eine sehr enge Teilmenge des anderen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie die bash benutzen,
oder ohne
extglob
oder
shopt -u extglob
ich nicht das wissen haben, zu Beurteilen, obwohl.shopt -u extglob
schaltet extglobs. Mit extglobs ausgeschaltet nicht extglob syntax arbeiten, obwohl, so dass (jetzt-akzeptiert?) edit sieht aus wie ein schlecht zu mir-dershopt -s extglob
Zweig dieser Antwort ist in Ordnung, und so ist diecase
- und GuV-version, aber ich bin sehr misstrauisch gegenüber den anderen.Warum gehst du nicht mit grep? Zum Beispiel:
ls |grep -v fubar|while read line; do echo "Lesen $line"; done;
Und hier ist die Ausgabe:
Lesen barbaz.melden
Lesen fubaz.melden
Lesen text.txt
ls
. Auch wenn Sie nicht haben extglobs zu tun!(*fubar*)
weniger buggy, es zu tun wie:for file in *; [[ $file = *fubar* ]] && continue; echo "Reading $line"; done