我想从目录(具有多个目录)列出具有诸如“hello”,“how”和“todo”等EXACT字符串的文件。另外,我只想列出c(.c)和cpp(.cpp)文件。
我尝试了grep -R
(grep -R "hello" /home
)但不满意。请帮助我增强grep -R
命令或任何其他方式。提前谢谢。
答案 0 :(得分:2)
如果您想查找文件,通常可以使用find
。
如果您要查找其内容中包含字符串“hello”,“how”或“todo”的所有.cpp
和.-c
文件,请使用以下内容:
find /home \( -name "*.c" -or -name "*.cpp" \) \
-exec egrep -l "(hello|how|todo)" \{\} \;
如果您要查找包含字符串“hello”,“how”或“todo”的所有.cpp
和.-c
文件,请使用以下内容:
find /home \
\( \( -name "*.c" -or -name "*.cpp" \) \
-and \
\( -name "*hello*" -or -name "*how*" -or -name "*todo*" \) \
\)
引用了一些引用(使用\
),因为()
,{}
和;
被shell视为特殊字符...
答案 1 :(得分:0)
事实上,grep本身就可以了。
但我强烈建议 ack-grep 。它是grep的一个很好的替代品,可以满足您的需求。
你可以找到它here
使用ack-grep就像
一样简单ack-grep --cc --cpp "(hello|how|todo)"
答案 2 :(得分:0)
您可以尝试以下方法:
grep -rn --include={*.c,*.cpp} yourdirectory -e ^h[a-z]*
这将搜索所有具有.c和.cpp扩展名的文件,并从指定的目录中找到以h开头的模式(您需要自己准备以满足您的需要)。