18/12/2007

Ricercare un file utilizzando un'espressione regolare

A cura di Efran Cobisi


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

Commenti


17/04/2008 9.43
Simbo: Interessante!
Bellissimo!

E se vogliamo scansionare una directory con all'interno sottodirectory e dire che se trova i nomi delle cartelle, ad esempio = pippo me li rinomina in pluto?

Come si fa? :(
17/04/2008 22.58
efran.cobisi: Rinominare ricorsivamente un set di cartelle
Non resistevo alla tentazione... Ed ho aggiunto un nuovo snippet che descrive questa operazione.

Eccoti accontentato!

HTH


EmailVerify.NET is a Microsoft .NET software component that validates e-mail addresses. valid email