递归删除目录中小于500字节的文件的PowerShell命令

8
我需要一个脚本,可以递归删除所有扩展名为.stat且大小小于500字节的文件夹中的所有文件。
如果脚本能够先列出所有将被删除的文件和文件数量,然后按下回车键即可继续删除所有文件,那就更好了。
3个回答

14

使用Get-Childitem非常简单,加上Where-Object和ForEach-Object更能提高效率:

$path = 'some path defined here'
Get-ChildItem $path -Filter *.stat -recurse |?{$_.PSIsContainer -eq $false -and $_.length -lt 500}|?{Remove-Item $_.fullname -WhatIf}

在测试代码确保它可以删除您想要的文件后,删除-whatif


4
如果您有许多子文件夹需要递归,则可以尝试使用Get-ChildItem的-file开关,因为使用文件系统提供程序进行过滤比使用Where-Object更有效。
Get-ChildItem $path -Filter *.stat -recurse -file | ? {$_.length -lt 500} | % {Remove-Item $_.fullname -WhatIf}

2

更简单的解决方案:

ls | where {$_.Length -lt .0.0005mb} | Remove-Item -Force-Recurse 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接