Power shell命令选择2个文件而不是一个文件

时间:2016-03-21 16:54:05

标签: powershell

我的剧本面临一个奇怪的问题。

我有2个文件: OBTM_OUTCOME_GFM_20150519164709_1.end 和 OBTM_OUTCOME_GFM_20150818142145_11.end

我想只选择具有最小MinKey的文件,其中MinKey是最后一个下划线后面的数字。 对于第一个文件,MinKey是1, 因为第二个MinKey是11。

S3PathName是S3存储桶,它对于两个文件都是相同的。 InputBaseFileName = OBTM_OUTCOME_GFM, 和MinKey被发现,它是1.

当我设置下面的命令时,我得到了两个文件,而我只对第一个文件感兴趣:

Get-S3Object -BucketName $S3BucketName -KeyPrefix $S3PathName | 
Where-Object {$_.Key -Like "$S3PathName/$InputBaseName*$MinKey.*"}.....

星号是否可能无法正常运行? 感谢

1 个答案:

答案 0 :(得分:1)

PetSerAl的解决方案是正确的,*允许任意数量的字符(包括0)。

如果你删除了除结尾之外的所有内容:

_1.end _11.end

并应用查询$_ -like *1.end它将返回两个文件,因为*可以表示“_”和“_1”。

通过将_添加到查询:$_ -like *_1.end,您确保只检查_之后的全匹配,而不是允许其他字符。

用'$ MinKey替换“1”并添加其余部分:

Where-Object {$_.Key -Like "$S3PathName/$InputBaseName*_$MinKey.*"}