Il cmdlet get-childitem è l’equivalente, con alcune migliorie, del comando dir che si utilizzava una volta per elencare i file presenti nel disco fisso o in alcune cartelle. Vediamo alcuni esempi su come utilizzarlo in PowerShell.

Get-ChildItem, o la sua versione abbreviata gci, visualizza i file e le cartelle presenti nella posizione corrente, quindi in c:\users\crazy.cat, si può anche indicare un percorso dove cercare, quindi Get-ChildItem c:\windows mostrerà il contenuto della cartella Windows.

Se non ci interessa vedere a video l’esito del comando possiamo reindirizzare l’output dello stesso verso un file di testo Get-ChildItem d:\iso > d:\report.txt.

Come utilizzare PowerShell ricercare ed elencare file cartelle

Get-ChildItem non visualizza i file nascosti, se vogliamo mostrare anche questi file bisogna aggiungere l’opzione -force, quindi il comando diventa Get-ChildItem -force. Se volessimo elencare il contenuto completo di tutto il disco fisso, con tutte le sue cartelle, va aggiunta anche l’opzione -recurse.

Le lettere presenti nella colonna Mode indicano gli attributi e le caratteristiche dell’oggetto:

  • l – un collegamento
  • d – una cartella
  • a – un file
  • r – un file in sola lettura
  • h – un file nascosto
  • s – un file di sistema

Come utilizzare PowerShell ricercare ed elencare file cartelle

Get-ChildItem d:\*.doc -recurse invece ci permette di cercare tutti i file con estensione .doc nell’intero disco fisso D.

Se invece volessimo trovare tutti i file che contengo nel nome una determinata stringa possiamo usare questo comando: Get-ChildItem d:\*turbolab*.doc -recurse

Come utilizzare PowerShell ricercare ed elencare file cartelle

Se vi serve solo l’elenco di file e cartelle, senza tutti gli altri dati, basta aggiungere -name al comando.

Come utilizzare PowerShell ricercare ed elencare file cartelle

Per trovare i file con una, o più di una, determinata estensione si utilizza questo comando Get-ChildItem -Path C:\windows\* -Include ("*.log","*.txt") -Name, se ci interessano i dati completi si toglie l’opzione -name, se si vuole cercare in tutte le sotto cartelle all’interno di c:\windows si aggiunge -recurse.

Come utilizzare PowerShell ricercare ed elencare file cartelle

Se invece vogliamo escludere alcuni tipi di file dall’elenco basta solo cambiare l’opzione presente nel comando. Così Get-ChildItem -Path C:\windows\* -exclude ("*.log","*.txt") -Name visualizza tutti gli altri file e cartelle tranne i .log e .txt.

I filtri

Possiamo estrapolare dati in base alla tipologia o agli attributi del file o della cartella.

  • Get-ChildItem C:\Windows -Directory elenca tutte le cartelle presenti in c:\windows.
  • Get-ChildItem C:\Windows -file mostra tutti i file presenti della cartella c:\windows

Invece questi comandi mostrano tutti i Mode (la colonna a sinistra) presenti sempre in c:\windows, i file possono avere anche più caratteristiche, quindi potrebbero essere presenti in più di un elenco.

  • Get-ChildItem C:\Windows -Hidden
  • Get-ChildItem C:\Windows -ReadOnly
  • Get-ChildItem C:\Windows -System
  • Get-ChildItem C:\Windows -attributes a (altre lettere utilizzabili sono d, r, h, s). Le lettere nell’ultimo comando possono essere usate in combinazione tra di loro, basta separarle con una virgola Get-ChildItem C:\Windows -attributes a, r

Come utilizzare PowerShell ricercare ed elencare file cartelle

Un altro filtro che ci può tornare utile, se vogliamo trovare tutti i file modificati o creati nelle ultime 24 ore è questo: Get-ChildItem -Path d:\ -recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-24) }

Invece Get-ChildItem -Path "D:\Dati Personali\Lettere\Articoli Turbolab.it" -recurse | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} mi trova gli articoli a cui ho lavorato, e archiviato, negli ultimi sette giorni.

Come utilizzare PowerShell ricercare ed elencare file cartelle

Se invece volete trovare i file più grandi di una certa dimensione, presenti in un percorso specificato, potete utilizzare questo comando:

Get-ChildItem -Path d:\iso -Recurse | Where-Object { $_.Length -gt 1GB } | Select-Object Name, Directory, Length

Attenzione: se il percorso della cartella indicata ha un nome molto lungo questo taglia la visualizzazione della dimensione (Lenght) del file.

Come utilizzare PowerShell ricercare ed elencare file cartelle

Conteggio file

Se vi serve sapere quanti file sono contenuti in una cartella, e in tutte le sue sotto cartelle, ci sono due comandi da poter utilizzare:

  • (Get-ChildItem -Path "D:\Dati Personali\Lettere\Articoli Turbolab.it" -recurse -File).count
  • (Get-ChildItem "D:\Dati Personali\Lettere\Articoli Turbolab.it" -File -Recurse | Measure-Object).count

Come utilizzare PowerShell ricercare ed elencare file cartelle