我正在使用 powershell 来“grep”特定字符串的源代码。如果字符串在文件中,我想要文件的名称,而不是包含该字符串的代码行。
我还想要文件名,仅一次,而不是与文件存在的次数一样多地列出。
我目前正在使用:
gci . -include "*.sql" -recurse | select-string -pattern 'someInterestingString'
现在我明白 select-string 的输出是某种对象,我猜我在控制台中看到的是ToString()
那个物体的。我想我可以使用format-table
控制选择字符串的输出,我想sort
仅获得不同的值。
但这是很多猜测。
我认为我不完全理解你想要做什么。如果您希望输出按文件分组,您可以通过管道输入Format-Table
与-GroupBy
范围:
gci . -include "*.sql" -recurse `
| select-string -pattern 'someInterestingString' `
| Format-Table -GroupBy Path
如果您只想获取匹配的文件名而没有任何其他信息,您可以使用Select-Object
与-Unique
范围:
gci . -include "*.sql" -recurse `
| select-string -pattern 'someInterestingString' `
| Select-Object -Unique Path
如果您只对文件名感兴趣,无论该名称本身是否在层次结构中多次出现,那么您可以选择Filename
财产代替。
注:Get-Member
cmdlet 对于确定对象上存在哪些属性有很大帮助:
gci . -include "*.sql" -recurse `
| select-string -pattern 'someInterestingString' `
| Get-Member
您还可以使用它的别名gm
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)