How to delete empty subfolders with PowerShell? How to delete empty subfolders with PowerShell? powershell powershell

How to delete empty subfolders with PowerShell?


I would do this in two passes - deleting the old files first and then the empty dirs:

Get-ChildItem -recurse | Where {!$_.PSIsContainer -and `$_.LastWriteTime -lt (get-date).AddDays(-31)} | Remove-Item -whatifGet-ChildItem -recurse | Where {$_.PSIsContainer -and `@(Get-ChildItem -Lit $_.Fullname -r | Where {!$_.PSIsContainer}).Length -eq 0} |Remove-Item -recurse -whatif

This type of operation demos the power of nested pipelines in PowerShell which the second set of commands demonstrates. It uses a nested pipeline to recursively determine if any directory has zero files under it.


In the spirit of the first answer, here is the shortest way to delete the empty directories:

ls -recurse | where {!@(ls -force $_.fullname)} | rm -whatif

The -force flag is needed for the cases when the directories have hidden folders, like .svn


This will sort subdirectories before parent directories working around the empty nested directory problem.

dir -Directory -Recurse |    %{ $_.FullName} |    sort -Descending |    where { !@(ls -force $_) } |    rm -WhatIf