我有问题。请给我一个解决方案。
我必须运行下面给出的命令,它将列出所有包含给定字符串“abcde1234”的文件。
查找 /path/to/dir/ * | xargs grep abcde1234
但在这里它也会显示包含字符串“abcde1234567”的文件。但我只需要包含单词“abcde1234”的文件。我需要在命令中进行哪些修改?
我有问题。请给我一个解决方案。
我必须运行下面给出的命令,它将列出所有包含给定字符串“abcde1234”的文件。
查找 /path/to/dir/ * | xargs grep abcde1234
但在这里它也会显示包含字符串“abcde1234567”的文件。但我只需要包含单词“abcde1234”的文件。我需要在命令中进行哪些修改?
当我需要类似的东西时,我使用\<
and \>
which 表示单词边界。像这样:
grep '\<abcde1234\>'
The symbols \< and \> respectively match the empty string at the beginning and end of a word.
但这就是我。正确的方法可能是使用-w
switch 代替(我倾向于忘记):
-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 :xargs
find
-exec
-r
grep -w -r abcde1234 /path/to/dir/
$ grep abcde1234 *
这将 grepabcde1234
当前目录中的字符串,以及字符串所在的文件名。前任:
abc.log: abcde1234 found
嗨,我得到了答案。通过将 $ 附加到要搜索的单词,它将显示仅包含该单词的文件。
命令将是这样的。
查找 /path/to/dir/ * | xargs grep abcde1234$
谢谢。