我有问题。请给我一个解决方案。
我必须运行一个命令,如下所示,它将列出包含“abcde1234”字符串的所有文件。
find / path / to / dir / * | xargs grep abcde1234
但是在这里它会显示包含字符串“abcde1234567”的文件。但我只需要包含单词“abcde1234”的文件。我需要在命令中进行哪些修改??
答案 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 $
感谢。