SDW Software

SDW Software - Home

FileMove Professional 2.5

 

Datei- und Ordnersuche

Die grosse Stärke von FileMove Pro sind die vielseitigen Möglichkeiten zur Suche von Dateien. Nebst der Festlegung der Dateieigenschaften kann mit Suchmustern gesucht werden. Diese Suchmuster können auf Dateinamen aber auch auf Verzeichnisnamen angewendet werden. Es gibt für beide Felder, dem für Ordnernamen und dem für Dateinamen, zwei Modi mit denen gesucht werden kann. Einer einfachen Suche und der Suche mit regulären Ausdrücken (RegEx). In beiden Modi können die Resultate ein- oder aber auch ausgeschlossen werden.

Einfache SucheNach oben

Die einfache Suche funktioniert ähnlich wie die Suche mit Windows. Die beiden Platzhalter * und ? bewirken folgendes:

*  Sucht nach beliebig vielen oder keinem Zeichen. 'Briefe*Geschäft' findet sowohl 'BriefeKundeGeschäft' als auch 'Briefe1Geschäft' oder 'BriefeGeschäft'.

?  Sucht nach einem einzigen oder keinem Zeichen. 'Briefe?Geschäft' findet 'BriefeGeschäft' oder 'BriefeTGeschäft'. Die Platzhalter können auch vermischt oder mehrmals in einem Ausdruck verwendet werden.

In Kombination mit den Dateierweiterungen kann so nach einer bestimmten Datei gesucht werden. Als erlaubte Zeichen für Dateinamen gelten die gleichen Regeln die Windows vorschreibt. So darf ein Dateiname keines der folgenden Zeichen enthalten:
\ : / " < > |
Ein eingebauter Filter filtert nicht erlaubte Zeichen heraus und gibt beim Vorhandensein derselben eine Meldung aus.

In der RegEx Terminologie würde die einfache Suche folgende für den Platzhalter * finden:

Suchmuster im Ordnerfeld:   Karl*Maij
RegEx:   ^Karl(.?)*Maij$
FileMove Pro sucht im ganzen Pfad nach:   \Karl(.?)*Maij\

Suchmuster im Dateinamenfeld:   Karl*Maij
RegEx:   ^Karl(.?)*Maij$
FileMove Pro sucht im Dateinamen nach:   ^Karl(.?)*Maij$

In der RegEx Terminologie würde die einfache Suche das folgende für den Platzhalter ? finden:

Suchmuster im Ordnerfeld:   Karl?Maij
RegEx:   ^Karl(.?)Maij$
FileMove Pro sucht im ganzen Pfad nach:   \Karl(.?)Maij\

Suchmuster im Dateinamenfeld:   Karl?Maij
RegEx:   ^Karl(.?)Maij$
FileMove Pro sucht im Dateinamen nach:   ^Karl(.?)Maij$

Dies schaut gefährlicher aus als es ist. Benutzen Sie die Vorschaufunktion um die Eingaben zu testen.

Reguläre AusdrückeNach oben

Reguläre Ausdrücke gehören schon in einen etwas fortgeschrittenen Bereich der Verwendung von Computern denn es gibt ganze Bücher über diese Technologie.
In FileMove Pro werden die regulären Ausdrücke bei der Dateisuche auf den Dateinamen und bei der Ordnersuche auf den ganzen Pfad angewendet.

Die Zeichen ^ und $ werden intern in einen Schrägstrich (\) umgewandelt.


Zum Beispiel: Wenn das Suchmuster im Bearbeitungsfenster Maij$ ist dann wird es intern zu Maij\ umgewandelt. Wenn das Suchmuster ^Karl ist, dann wird es zu \Karl umgewandelt. Ein Ausdruck wie (^Karl|^John) wird zu (\Karl|\John) und ein Ausdruck wie (Maij$|Sinclair$) wird zu (Maij\|Sinclair\).

Die im Bearbeitungsfenster auswählbaren Option 'Einschliessen' wendet die Suche an wenn das Suchmuster zutrifft. Die Option 'Ausschliessen' wendet die Suche an wenn das Suchmuster nicht zutrifft. Wenn 'alle' ausgewählt ist dann werden alle Ordner oder alle Dateien gesucht.

Benutzen Sie die Vorschaufunktion um die Suchmuster zu überprüfen!Nach oben

Die folgende Tabelle enthält eine vollständige Liste der Metazeichen und ihres Verhaltens im Kontext regulärer Ausdrücke die in FileMove Pro zulässig sind:

Zeichen Beschreibung
^ Entspricht \ wie oben beschrieben
$ Entspricht \ wie oben beschrieben
\ Markiert das nächste Zeichen entweder als Sonderzeichen, als Literal, als Rückverweis oder als oktalen Escapewert. Beispielsweise entspricht 'n' dem Zeichen "n". '\n' entspricht einem Zeilenumbruchzeichen. Die Sequenz '\\' entspricht "\", und '\(' entspricht "(".
* Entspricht dem vorhergehenden Unterausdruck keinmal, einmal oder mehrere Male. Beispielsweise entspricht 'Zo*' sowohl "Z" als auch "Zoo". * ist äquivalent zu '{0,}'.
+ Entspricht dem vorhergehenden Unterausdruck einmal oder mehrere Male. Beispielsweise entspricht 'Zo+' sowohl "Zo" als auch "Zoo", aber nicht "Z". + ist äquivalent zu '{1,}'.
? Entspricht dem vorhergehenden Unterausdruck keinmal oder einmal. Beispielsweise entspricht 'habe(n)?' dem "habe" in "habe" oder "haben". ? ist äquivalent zu '{0,1}'.
{n} n ist eine nicht negative Ganzzahl. Entspricht exakt n Mal. Beispielsweise entspricht 'o{2}' nicht dem "o" in "Robert", jedoch den beiden "o" in "Boot".
{n,} n ist eine nicht negative Ganzzahl. Entspricht mindestens n Mal. Beispielsweise entspricht 'o{2,}' nicht dem "o" in "Robert", aber allen "o" in "Boooot". 'o{1,}' ist äquivalent zu 'o+'. 'o{0,}' ist äquivalent zu 'o*'.
{n,m} m und n sind nicht negative Ganzzahlen, wobei n <= m. Entspricht mindestens n und höchstens m Mal. Beispielsweise entspricht 'o{1,3}' den ersten drei "o" in "Booooot". 'o{0,1}' ist äquivalent zu 'o?'. Beachten Sie, dass zwischen dem Komma und den Zahlen kein Leerzeichen stehen darf.
? Wenn dieses Zeichen unmittelbar auf einen der anderen Quantifizierer folgt (*, +, ?, {n}, {n,}, {n,m}), so ist die Musterentsprechung nicht umfassend, also von kürzestmöglicher Übereinstimmung. Ein nicht umfassendes Muster entspricht möglichst wenig der durchsuchten Zeichenfolge, während das umfassende Standardmuster möglichst viel der durchsuchten Zeichenfolge entspricht. In der Zeichenfolge "oooo" entspricht beispielsweise 'o+?' einem einzigen "o", während 'o+' allen "o" entspricht.
. Entspricht allen einzelnen Zeichen außer "\n". Um nach einer Entsprechung für alle einzelnen Zeichen einschließlich des "\n" zu suchen, verwenden Sie beispielsweise das Muster '[.\n]'.
(?:Muster) Entspricht Muster, speichert die Entsprechung jedoch nicht, d. h., es handelt sich um eine nicht speichernde Entsprechung, die nicht für eine mögliche spätere Verwendung gespeichert wird. Dies ist von Nutzen, wenn Teile eines Musters mit dem "oder"-Zeichen (|) kombiniert werden sollen. So ist beispielsweise 'telefonier(?:t|en)' ein kürzerer Ausdruck als 'telefoniert|telefonieren'.
(?=Muster) Die positive Vorausschau entspricht der Suchzeichenfolge an allen Stellen, an denen eine Muster entsprechende Zeichenfolge beginnt. Dabei handelt es sich um eine nicht speichernde Entsprechung, d. h., die Entsprechung wird nicht für eine mögliche spätere Verwendung gespeichert. Beispielsweise entspricht 'Windows (?=95|98|NT|2000)' dem Wort "Windows" in "Windows 2000", jedoch nicht dem Wort "Windows" in "Windows 3.1". Vorausschauen verbrauchen keine Zeichen, d. h., nachdem eine Entsprechung gefunden wurde, beginnt die Suche nach der nächsten Entsprechung unmittelbar nach der letzten Entsprechung und nicht nach den Zeichen, aus denen die Vorausschau bestand.
(?!Muster) Die komplementäre Vorausschau entspricht der Suchzeichenfolge an allen Stellen, an denen eine Muster nicht entsprechende Zeichenfolge beginnt. Dabei handelt es sich um eine nicht speichernde Entsprechung, d. h., die Entsprechung wird nicht für eine mögliche spätere Verwendung gespeichert. Beispielsweise entspricht 'Windows (?!95|98|NT|2000)' dem Wort "Windows" in "Windows 3.1", jedoch nicht dem Wort "Windows" in "Windows 2000". Vorausschauen verbrauchen keine Zeichen, d. h., nachdem eine Entsprechung gefunden wurde, beginnt die Suche nach der nächsten Entsprechung unmittelbar nach der letzten Entsprechung und nicht nach den Zeichen, aus denen die Vorausschau bestand.
x|y Entspricht entweder x oder y. Beispielsweise entspricht 'sch|blau' entweder "sch" oder "blau". '(sch|b)lau' entspricht "schlau" oder "blau".
[xyz] Eine Menge von Zeichen. Entspricht allen enthaltenen Zeichen. Beispielsweise entspricht '[abc]' dem "a" in "fallen".
[^xyz] Eine Komplementmenge von Zeichen. Entspricht allen nicht enthaltenen Zeichen. Beispielsweise entspricht '[^abc]' dem "f" in "fallen".
[a-z] Ein Zeichenbereich. Entspricht allen Zeichen im angegebenen Bereich. Beispielsweise entspricht '[a-z]' allen Kleinbuchstaben im Bereich von "a" bis "z".
[^a-z] Ein Komplementbereich von Zeichen. Entspricht allen Zeichen, die im angegebenen Bereich nicht enthalten sind. Beispielsweise entspricht '[^a-z]' allen Zeichen, die nicht im Bereich von "a" bis "z" enthalten sind.
\b Entspricht einer Wortgrenze, d. h. der Position zwischen einem Wort und einem Leerzeichen. Beispielsweise entspricht 'er\b' dem "er" in "neuer", jedoch nicht dem "er" in "Verb".
\B Entspricht einer Nichtwortgrenze. 'er\B' entspricht dem "er" in "Verb", jedoch nicht dem "er" in "neuer".
\cx Entspricht dem Steuerzeichen, das durch x angegeben wird. Beispielsweise entspricht '\cM' einem STRG-M oder Wagenrücklaufzeichen. Der Wert von x muss im Bereich von A-Z oder a-z liegen. Ist dies nicht der Fall, wird c als "c"-Zeichenliteral interpretiert.
\d Entspricht einer Ziffer. Äquivalent zu '[0-9]'.
\D Entspricht einer Nichtziffer. Äquivalent zu '[^0-9]'.
\f Entspricht einem Seitenvorschubzeichen. Äquivalent zu '\x0c' und '\cL'.
\n Entspricht einem Zeilenumbruchzeichen. Äquivalent zu '\x0a' und '\cJ'.
\r Entspricht einem Wagenrücklaufzeichen. Äquivalent zu '\x0d' und '\cM'.
\s Entspricht beliebigen Leerräumen wie Leerzeichen, Tabstopp, Seitenvorschub usw. Äquivalent zu '[ \f\n\r\t\v]'.
\S Entspricht beliebigen Nichtleerräumen. Äquivalent zu '[^ \f\n\r\t\v]'.
\t Entspricht einem Tabstoppzeichen. Äquivalent zu '\x09' und '\cI'.
\v Entspricht einem vertikalen Tabstoppzeichen. Äquivalent zu '\x0b' und '\cK'.
\w Entspricht allen Wortzeichen einschließlich Unterstrich. Äquivalent zu '[A-Za-z0-9_]'.
\W Entspricht allen Nichtwortzeichen. Äquivalent zu '[^A-Za-z0-9_]'.
\xn Entspricht n, wobei n ein hexadezimaler Escapewert ist. Hexadezimale Escapewerte müssen genau zwei Stellen aufweisen. '\x41' entspricht beispielsweise "A". '\x041' ist äquivalent zu "\x04" & "1". Ermöglicht die Verwendung von ASCII-Codes in regulären Ausdrücken.
\num Entspricht num, wobei num eine positive Ganzzahl ist. Ein Rückverweis auf gespeicherte Entsprechungen. Beispielsweise entspricht '(.)\1' zwei aufeinander folgenden identischen Zeichen.
\n Bezeichnet entweder einen oktalen Escapewert oder einen Rückverweis. Wenn \n mindestens n gespeicherte Unterausdrücke vorausgehen, handelt es sich bei n um einen Rückverweis. Anderenfalls ist n ein oktaler Escapewert, wenn n eine Oktalziffer (0-7) ist.
\nm Bezeichnet entweder einen oktalen Escapewert oder einen Rückverweis. Wenn \nm mindestens nm gespeicherte Unterausdrücke vorausgehen, handelt es sich bei nm um einen Rückverweis. Wenn \nm mindestens n gespeicherte Ausdrücke vorausgehen, ist n ein Rückverweis, dem das Literal m folgt. Wenn keine der vorhergehenden Bedingungen zutrifft, entspricht \nm dem oktalen Escapewert nm, wenn n und m Oktalziffern (0-7) sind.
\nml Entspricht dem oktalen Escapewert nml, wenn n eine Oktalziffer (0-3) ist und m und l Oktalziffern (0-7) sind.
\un Entspricht n, wobei n ein Unicodezeichen ist, das mit vier Hexadezimalziffern ausgedrückt wird. Beispielsweise entspricht '\u00A9' dem Copyrightsymbol (©).

Beispiele zur Verwendung von FileMove Pro und regulären Ausdrücken finden sich hier. Weitere Beispiele und Informationen über reguläre Ausdrücke finden sich im Internet über Google.

Buchempfehlung: Reguläre Ausdrücke 2.Auflage von Jeffrey E. F. Friedl

SDW Software • Internet and Desktop Applications
Gattikonerstrasse 127 • 8136 Gattikon • Switzerland
kem@sitedesign.chwww.sitedesign.ch