0

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

我必须运行下面给出的命令,它将列出所有包含给定字符串“abcde1234”的文件。

查找 /path/to/dir/ * | xargs grep abcde1234

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

4

3 回答 3

4

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

grep '\<abcde1234\>'

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

但这就是我。正确的方法可能是使用-wswitch 代替(我倾向于忘记):

-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.

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

grep -w -r abcde1234 /path/to/dir/
于 2013-03-25T06:18:49.357 回答
1
$ grep abcde1234 *

这将 grepabcde1234当前目录中的字符串,以及字符串所在的文件名。前任:

abc.log: abcde1234 found
于 2013-03-25T06:19:20.130 回答
0

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

命令将是这样的。

查找 /path/to/dir/ * | xargs grep abcde1234$

谢谢。

于 2013-03-25T06:19:16.187 回答