前几天看了一个项目产生的一个需求:修改其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" {} +