Return 递归搜索后的文件路径和上下文文本行
Return file path and context text line after recursive search
正在尝试对所有 .txt 文件进行递归搜索以查找特定单词和 return 找到该文本的文件路径和上下文文本行。
目前正在使用以下 PowerShell 脚本递归搜索文本所在文件的路径并将其导出到单独的文件,然后打开它们以手动搜索上下文。由于上下文不同,该词可能在文件中出现多次,需要全部审核。
$Path = Get-Location
$Text0 = "sometext"
$PathArray = @()
$Results0 = "$Path$Text0.txt"
Get-ChildItem $Path -Filter "*.txt" -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { $_.Attributes -ne "Directory" } |
ForEach-Object {
if (Get-Content $_.FullName | Select-String -Pattern $Text0) {
$PathArray += $_.FullName
$PathArray += $_.FullName
}
}
Write-Host "Contents of ArrayPath:"
$PathArray | ForEach-Object {$_} | Out-File $Results0 -Append
我希望 "c:\folder\folder\folder\textfile.txt" 的输出(当前输出)为 "c:\folder\folder\folder\textfile.txt; This is the text line containing the context where sometext was found."
如果您使用的是 PowerShell 3.0 版或更高版本,您可以这样做:
Get-ChildItem -Path $Path -Filter "*.txt" -File -Recurse -Force |
Select-String -Pattern $Text0 |
Select-Object Path, Line
对于 3.0 版以下的 PowerShell:
Get-ChildItem -Path $Path -Filter "*.txt" -Recurse -Force |
Where-Object { !$_.PsIsContainer } |
Select-String -Pattern $Text0 |
Select-Object Path, Line, LineNumber
会 return 像
Path Line
---- ----
D:\test\blah.txt this is the line that contains sometext.
D:\test\anotherfile.txt sometext
正在尝试对所有 .txt 文件进行递归搜索以查找特定单词和 return 找到该文本的文件路径和上下文文本行。
目前正在使用以下 PowerShell 脚本递归搜索文本所在文件的路径并将其导出到单独的文件,然后打开它们以手动搜索上下文。由于上下文不同,该词可能在文件中出现多次,需要全部审核。
$Path = Get-Location
$Text0 = "sometext"
$PathArray = @()
$Results0 = "$Path$Text0.txt"
Get-ChildItem $Path -Filter "*.txt" -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { $_.Attributes -ne "Directory" } |
ForEach-Object {
if (Get-Content $_.FullName | Select-String -Pattern $Text0) {
$PathArray += $_.FullName
$PathArray += $_.FullName
}
}
Write-Host "Contents of ArrayPath:"
$PathArray | ForEach-Object {$_} | Out-File $Results0 -Append
我希望 "c:\folder\folder\folder\textfile.txt" 的输出(当前输出)为 "c:\folder\folder\folder\textfile.txt; This is the text line containing the context where sometext was found."
如果您使用的是 PowerShell 3.0 版或更高版本,您可以这样做:
Get-ChildItem -Path $Path -Filter "*.txt" -File -Recurse -Force |
Select-String -Pattern $Text0 |
Select-Object Path, Line
对于 3.0 版以下的 PowerShell:
Get-ChildItem -Path $Path -Filter "*.txt" -Recurse -Force |
Where-Object { !$_.PsIsContainer } |
Select-String -Pattern $Text0 |
Select-Object Path, Line, LineNumber
会 return 像
Path Line ---- ---- D:\test\blah.txt this is the line that contains sometext. D:\test\anotherfile.txt sometext