如何使用grep在文件夹中查找单词?

How can I use grep to find a word inside a folder?

在Windows中,我会搜索文件夹中的单词。同样,我想知道一个特定的词是否出现在包含许多子目录和文件的目录中。搜索grep语法时,我必须指定文件名,即grep string filename

现在,我不知道文件名,我该怎么办?一个朋友建议我做grep -nr string,但我不知道这意味着什么,也没有结果(直到我发布Ctrl+C才有反应)。


1
grep -nr 'yourString*' .

在searches互联网端的当前目录。每个参数的意义:

1
2
3
4
-n            Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r            Recursively search subdirectories listed
.             Directory for search (current directory)

grep -nr 'MobileAppSer*' .(会发现MobileAppServlet.javaMobileAppServlet.classMobileAppServlet.txt;另一个办法是'MobileAppASer*.*'一样的东西)。

CT检查中使用grep命令的人更多的参数。


grep -nr string my_directory

附加说明:本satisfies的语法grep [options] string filename因为在类UNIX系统中,目录是一种文件(有一项"的规则文件,指的是对"实体"是"文件"(在Windows)。

grep -nr string读取的内容从输入到搜索的标准,这就是为什么它只是在等待输入从你当你停止这样做,和C(它会停止新闻^ ^ D以及在线,这是一个关键的组合端的文件)。


grep正则表达式解析器:全球处理器/计划/方案。你可以用这个来搜索当前目录。
你可以指定- R的,这是"推"的计划searches均值在所有subfolders subfolders,和他们,和他们的subfolder’s subfolders等。

1
grep -R"your word" .

-n将打印线号,它匹配的文件。
-i将搜索不区分大小写(资本/非大写字母)。

1
grep -inR"your regex pattern" .


也有一个:

1
find directory_name -type f -print0 | xargs -0 grep -li word

但这可能是beginner位多。

沃克是一个通用的find目录/李斯特,-type f均值"看目录和文件,而不是平原管你是什么——"打印",他们在-print0均值输出使用标准的delimiters null字符。find是发送到输出从标准输入xargs -0那块地在其命令行长度的限制,避免使用null字符)的记录(而不是标准的分隔符和换行符)grep -li word适用到每一集的文件。在grep"的文件列表,-l均值,均值匹配"和"-i区分大小写;你可以将你的选择通常是单字符-li见到更多的往往比-l -i

如果你不使用你-print0-0会运行到与文件名的问题,包括他们的操作系统是利用空间的好习惯。


1
grep -nr search_string search_dir

将递归(具体目录和所有它的子目录)_搜索的搜索字符串。(由美国网球协会的正确回答。

原因你是没有得到任何回答,与你的朋友的建议:

1
grep -nr string

是因为在为指定的目录。如果你想在你的目录中搜索,你必须做以下:

1
grep -nr string .

这是一个重要的特征:"。。。。。。。,本告诉grep搜索到这个目录。


  • grep -r"yourstring" *找到"将文件和文件夹在任何yourstring"
  • 现在,如果你想看两个不同的字符串是在同一时间,你可以选择的话,总是使用和添加的搜索。后中断的例子

  • grep -rE"yourstring|yourotherstring|$" *搜索列表的位置将在比赛yourstringyourotherstring

  • 为什么不是所有的递归搜索子目录中找到实例。

    grep -r 'text' *

    这类作品的魅力。


    我喜欢使用的另一个选项:

    1
    find folder_name -type f -exec grep your_text  {} \;

    收益型只读文件(不是文件夹。

    执行和运行grep }的在线搜索找到的文件,分别为()"命令的语法是{ }")。


    1
    grep -R"string" /directory/

    它用的是R -但我只是去发现它不工作了,在我的版本。

    1
    2
    grep --version
    grep (GNU grep) 3.1

    答案是你选择的好,和它的作品,但它是不是在正确的方式来做,因为:

    1
    grep -nr yourString* .

    这真的searches字符串"yourStrin""g"0或多的时代。

    只有在正确的方式,它是:

    1
    grep -nr \w*yourString\w* .

    命令字符串的任何字符searches与前和后的当前文件夹。


    类似于用"elrull取得答案,更容易搜索这方面的方式来指定字边界是使用-w选项:

    1
    grep -wnr"yourString" .


    Don’t使用grep。银ripgrep搜索或下载。他们正在两个杰出的方式,和更快的比色或ACK)与搜索选项。