我想在运行 unix 的网络服务器中搜索包含特定字符串的 php 文件。通常我使用这些命令来完成此任务:
寻找 。 -名称“*.php”-print0 | xargs -0 grep -H -i "要搜索的字符串"
到目前为止,这效果很好,但现在我遇到了一个服务器,其中所有 php 脚本都没有任何换行符,而只有回车符。 grep 似乎无法将回车符识别为新行,因此如果文件中有匹配项,上面的命令将打印文件的全部内容,而不仅仅是打印该行。
任何帮助将不胜感激!
答案1
效率不是很高,但应该可以:
find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <{})" \;
这是显示文件名的替代方法:
find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <'{}') |
sed s+^+'{}':\ +" \;