Geben Sie in Powershell die regulären Ausdrücke „.“ und „..“ an, um Dateien/Verzeichnisse zu finden?

Geben Sie in Powershell die regulären Ausdrücke „.“ und „..“ an, um Dateien/Verzeichnisse zu finden?

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$' }

verwandte Informationen