Powershell Get-Child-Item:如何按大小过滤?

JL *_*ret 1 powershell bash

粗略地说,我想做相当于bash的:

find . -name "*portal*" -type f -size +100k

我试过了:

Get-ChildItem -Filter "*portal*" -Recurse -File | where-object {Size -gt 10 }

Get-ChildItem -Filter "*portal*" -Recurse -File | where-object {Length -gt 10 }

Get-ChildItem -Filter "*portal*" -Recurse -File | where-object {$_.size -gt 100 }

这些数字故意很低,因为我不确定正在使用哪些单位。

但什么都没有返回。

Lot*_*ngs 7

  • ls, dir,gci是 的别名Get-ChildItem,可以代替使用。
  • 使用Lengthsize
  • 在 a whereor ?(aliases for Where-Object) 中不{}使用 Length,在大括号内使用?{$_.Length -gt 10kb}
  • 后缀kbmbgbtbpb直接跟随一个数字(INT /浮点)被自动扩展为1024的倍数(外壳无所谓)

PoSh 02:25:10 C:\> 1kb
1024
PoSh 02:25:18 C:\> 1mb
1048576
PoSh 02:25:29 C:\> 1gb
1073741824
PoSh 02:25:34 C:\> 1tb
1099511627776
PoSh 02:25:40 C:\> 1pb
1125899906842624
Run Code Online (Sandbox Code Playgroud)

这些是有效的
Get-ChildItem -Filter "*portal*" -Recurse -File | where Length -gt 10kb

Get-ChildItem -Filter "*portal*" -Recurse -File | where-object {$_.Length -gt 10mb }

Get-ChildItem -Filter "*portal*" -Recurse -File | ? Length -gt 1gb