【问题标题】:Return file path and context text line after recursive search递归搜索后返回文件路径和上下文文本行
【发布时间】:2019-12-23 08:44:03
【问题描述】:

尝试在所有 .txt 文件中递归搜索特定单词,并返回找到该文本的文件路径和上下文文本行。

当前使用下面的 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; 这是包含上下文的文本行在哪里找到了一些文本。”

【问题讨论】:

    标签: powershell recursion return-path


    【解决方案1】:

    如果您使用的是 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
    

    会返回类似的东西

    Path                    Line 
    ----                    ---- 
    D:\test\blah.txt        this is the line that contains sometext.
    D:\test\anotherfile.txt sometext
    

    【讨论】:

    • 嗨 Theo,感谢您在这方面的帮助。它运作良好,事情是当使用长路径时,每行仅生成 119 个字符,以 3 个点“...”结束该行。知道如何导出完整路径和全文行跳过每行字符数限制(所有这些文本文件都位于非常长的路径上......)?谢谢你,科斯敏。
    • 我在 PowerShell 5.1.15063.1805
    • @Cosmin 这些行仅在控制台上被截断。这只是 PS 格式化它的方式。如果您要添加 | Export-Csv cmdlet,您将看到这些行已完成。
    • 问题是我使用的是 Out-File; Export-Csv 效果很好。非常感谢你的帮助,西奥!
    猜你喜欢
    • 2015-10-03
    • 2020-06-22
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2021-04-20
    • 2019-10-25
    • 1970-01-01
    相关资源
    最近更新 更多