在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.java或MobileAppServlet.class或MobileAppServlet.txt;另一个办法是'MobileAppASer*.*'一样的东西)。
CT检查中使用grep命令的人更多的参数。
- 与*有什么关系?它将导致shell通配符扩展(如果有与通配符模式匹配的文件名),或者grep将其作为*前面的字符的0或更多重复运算符。
- 现在让我们来考虑一下grep -nr MobileAppSer* .1的两种可能性。假设当前目录中有3个文件与MobileAppSer*通配符模式匹配:命名为MobileAppServlet.java、MobileAppServlet.class、MobileAppServlet.txt。那么,grep将被这样调用:grep -nr MobileAppServlet.class MobileAppServlet.java MobileAppServlet.txt .。它意味着在文件mobileAppServlet.java、mobileAppServlet.txt和当前目录中的其他位置搜索文本"mobileAppServlet.class",这肯定不是用户想要的。
- 2。如果当前目录中没有与MobileAppSer*通配符模式匹配的文件,grep将按原样接收参数MobileAppSer*,从而将其作为搜索文本"mobileApps",后跟0个或多个"r",因此它将尝试查找文本"mobileApps"、"mobileApper"、"mobileAppsr"、"mobileAppser"在当前目录的文件内容中——也不是用户想要的。
- 这是一个可疑的选择雷杰克斯。USTA已经指出了这一点。
grep -nr string my_directory
附加说明:本satisfies的语法grep [options] string filename因为在类UNIX系统中,目录是一种文件(有一项"的规则文件,指的是对"实体"是"文件"(在Windows)。
grep -nr string读取的内容从输入到搜索的标准,这就是为什么它只是在等待输入从你当你停止这样做,和C(它会停止新闻^ ^ D以及在线,这是一个关键的组合端的文件)。
- 嘿,如果我想搜索一个字符串,不管是什么情况,我必须这样做:grep-i-nr"我的词"。
- @是的,相当于grep -inr"my word" .。
- @kiki:-rfor grep表示递归搜索子目录,-n表示在输出的每一行前面加上包含该行的文件的对应行号。man grep描述了所有这些,以及更多。
grep正则表达式解析器:全球处理器/计划/方案。你可以用这个来搜索当前目录。
你可以指定- R的,这是"推"的计划searches均值在所有subfolders subfolders,和他们,和他们的subfolder’s subfolders等。
-n将打印线号,它匹配的文件。
-i将搜索不区分大小写(资本/非大写字母)。
1
| grep -inR"your regex pattern" . |
- ./*表示当前目录中的所有文件,-r表示递归(搜索子目录等)
也有一个:
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会运行到与文件名的问题,包括他们的操作系统是利用空间的好习惯。
- @嗯,谢谢。如果我不给出解释作为答案的一部分,我会感到很难过,尤其是在与初学者一起工作时。
- 这就是我在这个网站上最欣赏的。重要的是要记住,我们曾经都是初学者,在科技界很难出现!
- 我可以排除某些目录吗?侏儒
- @应该有ferologics,从命令行检查man find以查看您的find支持哪些选项。
1
| grep -nr search_string search_dir |
将递归(具体目录和所有它的子目录)_搜索的搜索字符串。(由美国网球协会的正确回答。
原因你是没有得到任何回答,与你的朋友的建议:
是因为在为指定的目录。如果你想在你的目录中搜索,你必须做以下:
这是一个重要的特征:"。。。。。。。,本告诉grep搜索到这个目录。
- 嗨,如果我必须搜索两个词之间的空格,我该怎么做?是否应在引号中指定单词?即grep-nr"我的话"。
grep -r"yourstring" *找到"将文件和文件夹在任何yourstring"
现在,如果你想看两个不同的字符串是在同一时间,你可以选择的话,总是使用和添加的搜索。后中断的例子
grep -rE"yourstring|yourotherstring|$" *搜索列表的位置将在比赛yourstring或yourotherstring
为什么不是所有的递归搜索子目录中找到实例。
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 |
答案是你选择的好,和它的作品,但它是不是在正确的方式来做,因为:
这真的searches字符串"yourStrin"和"g"0或多的时代。
只有在正确的方式,它是:
1
| grep -nr \w*yourString\w* . |
命令字符串的任何字符searches与前和后的当前文件夹。
- 然而,grep -nr yourString也起作用,因为它在线路的任何地方(或者至少在我的系统上,osx lion)寻找裸露的yourString。
类似于用"elrull取得答案,更容易搜索这方面的方式来指定字边界是使用-w选项:
Don’t使用grep。银ripgrep搜索或下载。他们正在两个杰出的方式,和更快的比色或ACK)与搜索选项。
- 这些工具也许很棒,但这并不能回答我如何使用这些工具来完成OP的要求。