Delete files recursively with PowerShell Delete files recursively with PowerShell powershell powershell

Delete files recursively with PowerShell


Use Get-ChildItem -recurse to get all the files, you can then pipe them to the where-object commandlet to filter out the directories and use the LastAccessTime property to filter based on that attribute. Then you pipe the result to a foreach-object that executes the delete command.

It ends up looking like this. Note the use of Get-Date, to get all files updated since the start of the year, replace with your own date:

get-childitem C:\what\ever -recurse | where-object {-not $_.PSIsContainer -and ($_.LastAccessTime -gt (get-date "1/1/2012"))} | foreach-object { del $_ }

Or to use some common aliases to shorten everything:

dir C:\what\ever -recurse | ? {-not $_.PSIsContainer -and ($_.LastAccessTime -gt (get-date "1/1/2012"))} | % { del $_ }


As an aside, this is how you'd do the same (get files only) in PowerShell 3.0:

$old = Get-Date "1/1/2012"Get-ChildItem C:\what\ever -File -Recurse | Where-Object {$_.LastAccessTime -gt $old} | Remove-Item -Force