📌  相关文章
📜  powershell 在文件中递归查找字符串 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:18:40.804000             🧑  作者: Mango

Powershell 在文件中递归查找字符串

当我们需要在文件中查找特定的文本字符串时,可以使用 PowerShell 来递归查找整个目录中的文件。

以下是一个 Powershell 脚本,使用了递归逐个查找文件夹中的文本文件,并查找文件中是否包含特定的字符串。

$FolderPath = "C:\Folder\Path" # 路径
$SearchString = "Hello World" # 要搜索的文本字符串
$Extensions = "*.txt" # 要搜索的文件扩展名

# 递归查找所有文件夹和子文件夹中的文件
$Files = Get-ChildItem -Path $FolderPath -Recurse | Where-Object { $_.Extension -in $Extensions }

# 遍历每个文件并查找字符串
foreach ($File in $Files) {
    # 在文件中查找字符串
    $Found = Select-String -Path $File.FullName -Pattern $SearchString -Quiet
    
    # 如果找到字符串,输出结果
    if ($Found) {
        Write-Host "Found '$SearchString' in file $($File.FullName)"
    }
}

这个脚本使用 Get-ChildItem 命令递归遍历文件夹,获取所有包含指定扩展名的文件。然后使用 Select-String 命令在每个文件中查找指定的字符串,并使用 Write-Host 命令输出结果。

此外,我们也可以将结果保存到一个文本文件中,如下所示:

$FolderPath = "C:\Folder\Path" # 路径
$SearchString = "Hello World" # 要搜索的文本字符串
$Extensions = "*.txt" # 要搜索的文件扩展名

# 递归查找所有文件夹和子文件夹中的文件
$Files = Get-ChildItem -Path $FolderPath -Recurse | Where-Object { $_.Extension -in $Extensions }

# 遍历每个文件并查找字符串
foreach ($File in $Files) {
    # 在文件中查找字符串
    $Found = Select-String -Path $File.FullName -Pattern $SearchString -Quiet
    
    # 如果找到字符串,保存结果到文件
    if ($Found) {
        Add-Content -Path "Search Results.txt" -Value "Found '$SearchString' in file $($File.FullName)"
    }
}

这个脚本将搜索结果保存在 Search Results.txt 文本文件中,使用 Add-Content 命令向文件中添加内容。

以上就是使用 PowerShell 在文件中递归查找字符串的方法,可以根据实际需求进行调整和修改。