[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ls | grep



Am Samstag, den 07.01.2006, 14:45 +0100 schrieb Al Bogner:
> Am Samstag, 7. Januar 2006 14:32 schrieb Daniel Leidert:
> > find -maxdepth 1 ! -regex ".*_[1|2]$" -printf "%f\n"
> 
> find -maxdepth 1 ! -regex ".*_[1|2]$" -printf "%f\n"
                                  ^ das ist natürlich Unsinn.

> .
> a
> datei
> a_kb
> a_cd
> a_ef
> 
> Ich vermute, dass mir der 1. Punkt noch Probleme machen wird.

Einfache Lösung: Spezifiziere, dass du nur an Dateien interessiert bis
(es handelt sich doch nur um Dateien?). Der Punkt steht für ein
Verzeichnis:

find -maxdepth 1 ! -regex ".*_[12]$" -type f -printf "%f\n"

Oder schließe den Punkt halt generell noch mit aus:

find -maxdepth 1 ! -regex "\(\.$\)\|\(.*[12]$\)" -printf "%f\n"

> Ich habe noch immer nicht rausgefunden, warum die "Oder-Syntax" nur mit 1 
> Zeichen funktioniert.

Das ist eine Mengen-Syntax. '[]' enthält eine Menge. Der '|' ist Unsinn
an dieser Stelle.

> find -maxdepth 1 ! -regex ".*_[cd|ef]$" -printf "%f\n"

Probiere ein

find -maxdepth 1 ! -regex ".*_\(cd\|ef\)$" -printf "%f\n"

sollte funktionieren. Irgendwie ist der Syntax etwas
gewöhnungsbedürftig. Kann mir jemand erklären, warum ich die Klammern,
obwohl ich den Ausdruck in '"' entwickle, mit einem Escape-Zeichen
versehen muss?

MfG Daniel



Reply to: