高效地在多个文件中查找指定内容

前几天看了一个项目产生的一个需求:修改其Web页面上显示的某个字符串。然而,在寻找相关PHP代码文件时头疼了,因为我不会PHP且该项目作者的文件命名方式太过抽象。所以,我无法轻易定位到目标文件进行修改。

因此就学到了这条命令:

grep -rnw '/my_file/php_2024_05_28_yes/generate' -e 'Nothing Found' --include=*.php
// 它会返回包含这个内容的文件路径和在文件中的所在行
// 其中'/my_file/php_2024_05_28_yes/generate'为我的路径
// 'Nothing Found'为所需要搜索的内容,它搜索的不是文件名,而是这个路径下所有文件的内容
// 参数:
-r 递归搜索指定目录及其子目录中的所有文件。
-n: 匹配所在行号。
-w: 匹配整个单词。
// *.php这个路径下所有的php文件

上面是Linux中的命令,本着举一反三的学习态度,也知道了在Windows(PowerShell)中的命令

Get-ChildItem -Path "G:\my_file\备份文件2024_05_17(新主题)\20240517_083903\generate" -Recurse -Filter *.php |
ForEach-Object {
     $content = Get-Content -Raw $_.FullName
     if ($content -like "*Nothing Found*") {
         $_.FullName
         # 取消注释放出匹配的行
        # $content | Select-String -Pattern "Sorry" -AllMatches | ForEach-Object { $_.Line }     }
        }

如果装了Git Bash的话也是可以做到的

find "G:\my_file\备份文件2024_05_17(新主题)\20240517_083903\generate" -type f -name "*.php" -exec grep -H "Nothing Found" {} +