2016-03-21 25 views
-1

我正面对着我的脚本的一个奇怪问题。电源shell命令选择2个文件,而不是仅仅一个

我有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.*"}..... 

有没有可能星号不能正常工作,因为我认为它应该? 谢谢

+0

你是如何定义$ MinKey? – dfundako

+2

'-Like“$ S3PathName/$ InputBaseName * _ $ MinKey。*”' – PetSerAl

+0

Thanks @PetSerAl!这实际上解决了它:) – user2518751

回答

1

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

如果你修剪出,除了年底的一切:

_1.end _11.end

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

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

替换 “1”`$ MinKey并添加其余:

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