【发布时间】:2012-12-02 06:14:06
【问题描述】:
grep时需要知道完整的文件路径。
我使用类似的命令
cat *.log | grep somethingtosearch
现在我需要用完整的文件路径显示结果,从哪里取出匹配的结果。
帮助任何人?
【问题讨论】:
grep时需要知道完整的文件路径。
我使用类似的命令
cat *.log | grep somethingtosearch
现在我需要用完整的文件路径显示结果,从哪里取出匹配的结果。
帮助任何人?
【问题讨论】:
用途:
grep somethingtosearch *.log
文件名将与匹配项一起打印出来。
【讨论】:
假设您有两个日志文件:
cd 到 C: 并使用:
grep -r somethingtosearch temp/*.log
它会给你一个类似的列表:
temp/my.log:somethingtosearch
temp/alsoMy.log:somethingtosearch1
temp/alsoMy.log:somethingtosearch2
【讨论】:
对我来说
grep -b "searchsomething" *.log
按我的意愿工作
【讨论】:
如果你想查看完整路径,我建议cd 到顶层目录(如果使用 Windows,则为你的驱动器)
cd C:\
grep -r somethingtosearch C:\Users\Ozzesh\temp
或者在 Linux 上:
cd /
grep -r somethingtosearch ~/temp
如果你真的反对你的文件名过滤(*.log)并且你想要recursive(文件并不都在同一个目录中),那么结合find和grep是最灵活的方式:
cd /
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \;
【讨论】:
打印完整路径的最简单方法是将相对起始路径替换为绝对路径:
grep -r --include="*.sh" "pattern" ${PWD}
【讨论】:
命令:
grep -rl --include="*.js" "searchString" ${PWD}
返回的输出:
/root/test/bas.js
【讨论】:
当我正在寻找完全相同的问题时,我跌倒在这里,也许它可以帮助其他人。
我认为真正的解决方案是:
cat *.log | grep -H somethingtosearch
【讨论】:
grep,而不是将文件名作为参数传递,grep 无法知道文件名并打印“(标准输入)”。
【讨论】: