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