18/12/2007
Ricercare un file utilizzando un'espressione regolare
Una delle potenzialità più sfruttate di PowerShell è di certo la forte integrazione con il motore di espressioni regolari esposto dal framework .NET; la shell, infatti, consente il matching semplice di espressioni utilizzando l'operatore
-match.
Tra le aree di impiego più sfruttate da questa tecnologia trova sicuramente posto la ricerca di file e cartelle. Procedendo per gradi, ecco come è possibile ricercare i file e cartelle che
iniziano con la lettera w all'interno della posizione corrente:
Get-ChildItem |
Where-Object { $_ -match '^w' }
È interessante notare come questo script sia funzionalmente identico al successivo, più breve, che utilizza il supporto wildcard:
Get-ChildItem w*
Una ricerca più complessa potrebbe utilizzare le classi di espressioni, cercando, ad esempio, tutti i file o cartelle che
iniziano con la lettera w e contengono almeno una cifra numerica all'interno del proprio nome:
Get-ChildItem |
Where-Object { $_ -match '^w.*\d' }
Una ricerca ancora più complessa potrebbe far uso delle backreference e cercare tutti i file e cartelle il cui nome
contenga un pattern testuale lungo almeno tre caratteri ripetuto almeno due volte:
Es:
abcxyzabc.txt ripete il pattern
abc due volte.
Get-ChildItem |
Where-Object { $_ -match '(.{3,}).*(\1)' }