如何使用 Powershell 列出包含字符串的位置、文件名和文件行?

How can I use Powershell to list the location, file name, and line of files containing a string?

我一直在无数 Stack 帖子中跳来跳去试图解决这个问题,但 none 到目前为止已经产生了我想要的结果。

假设我有一个目录如下:

主要

每个子文件夹都包含文件。我想为字符串“dummy”的每个实例列出以下信息。

示例输出为:

Main/Sub 1/亚11/亚111/testfile1.txt

“我是这个文件的内容,我包含了虚拟!”

Main/Sub 1/子 11/testfile2.txt

“我是这个文件的内容,我包含了虚拟!”

Main/Sub 2/testfile3.txt

“我是这个文件的内容,我包含了虚拟!”

到目前为止,我已经能够获取文件列表,但无法使用此一行获取行本身:

Get-ChildItem -Recurse | Where-Object { $_ | Select-String -Pattern "dummy" } | ls -r  | Set-Content Output.txt

试试这个,这不是您要查找的确切输出,这将 return 一个对象而不是可以导出到 CSV 的字符串:

Get-ChildItem -Recurse | Select-String -Pattern "dummy" |
Select-Object FileName,Path,LineNumber,Line |
Export-Csv 'fullpath\to\Output.csv' -NoTypeInformation