
Ich finde, dass Powershell in gewisser Weise in begrenztem Umfang reguläre Ausdrücke ausführen kann. Zweifellos kann es mehr, aber ich verstehe nicht, warum es hier nicht vorhanden ist. Ich versuche, einen regulären Ausdruck zu verwenden, um Dateien/Verzeichnisse anzugeben.
Wenn ich beispielsweise ein Verzeichnis namens "qwe" habe, wird es angezeigt
PS C:\Users\bob\a> Get-ChildItem C:\Users\bob\a\[qwe][qwe][qwe]
d---- 24/08/2014 1:28 PM qwe
Aber ich kann nicht
PS C:\Users\bob\a> Get-ChildItem C:\Users\bob\a\q.e
(um das qwe-Verzeichnis abzurufen)
Und wenn ich das tue
PS C:\Users\bob\a> Get-ChildItem C:\Users\bob\a\..
Dann geht es zurück in ein Verzeichnis und ich kann keine Möglichkeit finden, es mit einer Datei/einem Verzeichnis mit 2+ Zeichen oder sogar 2 Zeichen abzugleichen, mit dem regulären Ausdruck..
Es unterstützt jedoch diesen Aspekt der regulären Ausdrücke [abcd] (eine Zeichenklasse, die einem „a“ oder „b“ oder „c“ oder „d“ entspricht) oder [az], obwohl es sich dabei um einen nicht regulären Ausdruck handelt, da [abcd] nur dann übereinstimmt, wenn das Ergebnis ein Zeichen ist. Mit einem richtigen regulären Ausdruck würde es normalerweise mit allem übereinstimmen, das dieses Zeichen enthält, auch wenn mehr als dieses Zeichen vorhanden ist.
Antwort1
Bei Dateinamen hat der Punkt eine besondere Bedeutung, daher müssen Sie für diese Art der Filterung Where-Object (oder die Kurzform davon) verwenden:
Get-ChildItem . | Where-Object { $_.Name -match '^q.e$' }