我正在使用以下众所周知的解决方案来递归查找大于指定值的文件:
forfiles /S /M * /C "cmd /c if @fsize GEQ 2000000000 echo @path"
这完全可以正常工作,除非我尝试使用此命令查找大于 2^31 的值。例如
forfiles /S /M * /C "cmd /c if @fsize GEQ 3000000000 echo @path"
有问题,因为它还返回大小为 2310123265 的文件,而不仅仅是大于 3000000000 的文件
我猜测这与 32 位有符号整数算法有关。
问题
我如何搜索大于 3gb 的文件?
答案1
PowerShell 处理大值没有问题:
gci -file -recurse | ? length -ge 3e9
gci -File -Recurse | where Length -ge 3000000000
Get-ChildItem -File -Recurse | where { $_.Length -ge 3000000000 }
要获取路径,请通过 Format-Table 传输结果,但要小心避免截断:
... | ft FullName -auto
(这是 PowerShell做有问题)