该文件包含以下行
google.friendconnect
我从以下命令中得到了这一行
cat * | grep google
但我不知道它的位置。
如何获取文件的精确位置没有 Ack?
答案1
对于您描述的一般问题,要找到您可以运行的文件
grep -r 'google.friendconnect' /
其中 '/' 是您要搜索的任何目录路径。这将递归搜索该目录树中的所有文件以查找该字符串。呈现的特定命令将需要一段时间,并且会产生大量“权限被拒绝”错误,除非您以 root 身份运行它。因为它将搜索 proc、var、sys 和其他用户的主目录。您可能还需要 grep 的另一个有用选项是 '-n'。这还将打印出匹配的文件的行号。例如,
grep -n 'google.friendconnect' *
testfile:3:google.friendconnect
我发现 90% 的时间我使用 grep 的选项“irn”:不区分大小写、递归和打印行号。
答案2
尝试-H
使用 标志grep
。另外,请不要cat
在那里使用。这是没有必要的。
grep -H google *
需要澄清的是,该-H
标志强制grep
打印文件名。经过深思熟虑,我记得 -H 标志是搜索多个文件时的默认标志。因此,在这种情况下它是多余的。Andy 的回答确实更简单、更正确。
答案3
grep 谷歌*
(不要使用 cat,而是给 grep 一个文件名列表,它会在打印行时打印匹配的文件的名称)
答案4
在目录下的所有文件中搜索字符串以打印匹配文件并在匹配行上显示行号的最佳方法在基础目录中看起来像这样。
grep -Hn <string_of_interest> `find . -type f`
那是没有使用 AWK(我猜这就是你的意思)。