我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
当前回答
正如彼得在以前的回答中提到的那样,所有以前的回答都建议抓住并找到。
但有一个更复杂的方式使用Gnome Commander与完美的GUI和数以百万计的选项自2001年以来,并找到文件只是其中之一。
其他回答
你可以使用:
grep -r "string to be searched" /path/to/dir
r 是可重复的,因此将在指定的路径和其子指南中进行搜索,这将告诉您文件名以及在文件中印刷线的字符串。
或类似于您正在尝试的命令(例如: )在所有JavaScript文件中搜索( (*.js):
find . -name '*.js' -exec grep -i 'string to search for' {} \; -print
这将打印文本显示的文件中的行,但它不会打印文件名。
除了此命令之外,我们还可以写下: grep -rn “String to search” /path/to/directory/or/file -r: recursive search n: line number will be shown for matches
避免混乱并安装 ack-grep. 它消除了许多许可和引用问题。
apt-get install ack-grep
然后转到您想要搜索的目录,并运行下面的命令。
cd /
ack-grep "find my keyword"
如果您的捕捉不支持重复搜索,您可以将搜索与 xargs 相结合:
find / -type f | xargs grep 'text-to-find-here'
我觉得这比找到 -exec 的格式更容易记住。
这将产生相匹配线的文件名和内容,例如。
/home/rob/file:text-to-find-here
您可能想添加到捕捉的选项旗帜:
-i - 案例不敏感搜索 -l - 只输出相匹配的行输出(而不是相匹配的行输出)
做下列事:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r 或 -R 是重复的, -n 是字符号, -w 是相匹配整个单词的。 -l (较低的 L 案例) 可以添加到只提供相匹配文件的文件名。
与此同时, - 排除, - 包括, - 排除-dir 旗帜可以用于有效的搜索:
这只会通过具有.c 或.h 扩展的文件进行搜索: grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern" 这将排除与.o 扩展结束的所有文件进行搜索: grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern" 对于目录,可以使用 --exclude-dir 参数排除一个或多个目录。
这对我来说非常好,为了实现几乎与你的同样的目的。
更多选项,看看男人抓住。
您可以使用以下命令从文件中找到特定文本:
cat file | grep 'abc' | cut -d':' -f2