我几天前开始学习powershell,我在google上找不到任何我需要的东西,所以请忍受我的问题 .
我被要求将一些文本字符串替换为多个文件 . 我不一定知道可能的目标文件的扩展名,也不知道它们的位置 . 到目前为止,我已经设法以递归方式浏览目录( get-ChildItem -recurse
),并使用get-content和select-string查找我正在寻找的字符串:
Get-ChildItem -recurse | Get-Content | Select-String -pattern "dummy"
问题是,我可以看到我正在寻找的文本的出现,但我不知道如何告诉PS返回每个匹配文件的路径和名称 .
如何获取包含我要查找的表达式的文件的名称和位置?
9 回答
管道你的内容
到
fl *
您将看到该路径已作为对象的属性返回 .
如果您只想要路径,请使用
select path
或select -unique path
删除重复项:我就是这样做的,你不需要get-content:
要么
要了解不同的属性是什么......
这将显示包含搜索字符串的每个文件的完整路径列表:
请注意,它不会在结果上方显示 Headers ,也不会显示包含搜索字符串的文本行 . 所有它告诉你在哪里可以找到包含字符串的文件 .
如果搜索到一个目录,则可以执行以下操作:
这将显示它找到的与模式匹配的路径,文件名和内容行 .
这应该给出包含您的模式的文件的位置:
这将为您提供所有文件的完整详细信息
要在结果数组中保留完整的文件详细信息,您可以稍微修改vikas368发布的答案(这似乎不适用于ISE自动完成):
或简而言之:
这里有各种准确的答案,但这里有几个不同变体的最简洁的代码 . 对于每个变体,顶行显示完整语法,底部显示简洁语法 .
项目(2)是Jon Z和manojlds的答案的更简洁形式,而项目(1)相当于vikas368和buygrush的答案 .