17/04/2008
Rinominare ricorsivamente un set di cartelle
All'interno delle operazioni di routine della gestione di un file server rientra talvolta la possibilità di andare ad agire su di un set di file o cartelle, definito tramite uno o più criteri.
Windows PowerShell permette di utilizzare una pipeline composta da più operatori per concatenare un'operazione di recupero di oggetti dal filesystem (o da un altro provider PowerShell), una di verifica dei requisiti per ciascun elemento del set ed, infine, l'azione da effettuare su ognuno.
Ecco come sia possibile, nello snippet che segue, recuperare tutti gli elementi della posizione corrente su file system, in maniera ricorsiva, verificarne il nome (pippo) ed il fatto che siano Container, ovvero contenitori di altri elementi (per il filesystem il concetto corrisponde a quello di cartella): in caso affermativo ciascun oggetto viene rinominato (in pluto).
Get-ChildItem -Recurse |
Where-Object { $_.PSIsContainer -and ($_.Name -eq 'pippo' ) } |
ForEach-Object { Rename-Item $_.PSPath 'pluto' }