1

我想从一个目录(有多个目录)中列出具有“hello”、“how”和“todo”等精确字符串的文件。我也只想列出 c(.c) 和 cpp (.cpp) 文件。我尝试过grep -R( grep -R "hello" /home) 但不满意。请帮助我增强我的grep -R命令或任何替代方式。提前致谢。

4

3 回答 3

2

如果你想查找文件,一个好的开始通常是使用find.

如果要查找所有内容.cpp.-c包含字符串“hello”、“how”或“todo”的文件,请使用以下内容:

find /home \( -name "*.c" -or -name "*.cpp" \) \
    -exec egrep -l "(hello|how|todo)" \{\} \;

.cpp相反,如果您想查找.-c文件名中包含字符串“hello”、“how”或“todo”的所有文件,请使用以下内容:

find /home                                                       \
   \( \( -name "*.c" -or -name "*.cpp" \)                        \
      -and                                                       \
      \( -name "*hello*" -or -name "*how*" -or -name "*todo*" \) \
   \)

涉及到一些引用(使用\), as (){}并且;被shell视为特殊字符......

于 2013-09-10T08:20:24.737 回答
0

事实上 grep 本身就可以了。

但是我强烈建议ack-grep。它是 grep 的一个很好的替代品,适合您的需要。

你可以在这里找到

使用 ack-grep 它就像

ack-grep --cc --cpp "(hello|how|todo)"
于 2013-09-10T08:16:23.873 回答
0

您可以尝试以下方法:

      grep -rn --include={*.c,*.cpp} yourdirectory -e ^h[a-z]*

这将搜索所有具有 .c 和 .cpp 扩展名的文件,并从您指定的目录中找到以 h 开头的模式(您需要准备好自己的以满足您的需要)。

于 2013-09-10T08:30:54.627 回答