在shell脚本中搜索特定单词

时间:2013-03-25 06:10:12

标签: shell

我有问题。请给我一个解决方案。

我必须运行一个命令,如下所示,它将列出包含“abcde1234”字符串的所有文件。

  

find / path / to / dir / * | xargs grep abcde1234

但是在这里它会显示包含字符串“abcde1234567”的文件。但我只需要包含单词“abcde1234”的文件。我需要在命令中进行哪些修改??

3 个答案:

答案 0 :(得分:4)

当我需要这样的东西时,我会使用\<\>来表示单词边界。像这样:

grep '\<abcde1234\>'

The symbols \< and \> respectively match the empty string at the beginning and end of a word.

但那就是我。正确的方法可能是使用-w开关(我倾向于忘记):

-w, --word-regexp
          Select  only  those  lines  containing matches that form whole words.  The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character.  Similarly, it
          must be either at the end of the line or followed by a non-word constituent character.  Word-constituent characters are letters, digits, and the underscore.

还有一件事:您可以find使用xargs而不是find + -exec。或者实际上只是用-r grep:

grep -w -r abcde1234 /path/to/dir/

答案 1 :(得分:1)

$ grep abcde1234 *

这将grep当前目录中的字符串abcde1234,其中包含字符串所在的文件名。 例如:

abc.log: abcde1234 found

答案 2 :(得分:0)

您好我得到了答案。通过附加$来搜索单词,它将显示仅包含该单词的文件。

命令就是这样。

  

find / path / to / dir / * | xargs grep abcde1234 $

感谢。