我最喜欢的BASH命令之一是:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
它将在当前目录及其下的所有文件的内容中搜索指定的SearchString。作为开发人员,这有时会派上用场。
由于我当前的项目以及我的代码库的结构,因此,我想通过不搜索包含“ .svn”的目录中或目录中或目录下的任何文件,或者不搜索任何文件的方式,使BASH命令更加高级。以“ .html”结尾
查找的MAN页面让我有些困惑。我尝试使用-prune,它给了我奇怪的行为。为了仅跳过.html页面(开始),我尝试了以下操作:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
并没有得到我希望的行为。我想我可能会错过-prune的要点。你们能帮帮我吗?
谢谢
您可以使用
—
emanuele 2014年
grep -rl 'SearchString'
@emanuele您好,欢迎来到SuperUser(和Stack Exchange网络)。我是在2 1/2年前问过这个问题的。通常,如果您想添加问题的答案,请滚动至底部并在此处回答,而不要在注释中添加答案。由于此问题已经有一个可接受的答案(带有绿色选中标记的答案),因此您的答案不太可能引起太多关注。仅供参考。
—
科迪S
嗨,这不是您问题的答案。正如您在前言中所述,它用于
—
emanuele 2014年
find
在文件内部进行搜索只是一个提示。
FWIW
—
Stefan
-name '*.*'
不会找到所有文件:仅找到.
名称中带有的文件(*.*
通常使用DOS风格,而在Unix中,通常只*
使用该名称)。要真正匹配它们,只需完全删除参数:find . -exec ...
。或者,如果您只想将grep应用于文件(并跳过目录),请执行find . -type f -exec ...
。
find
不是内置的bash命令,而是一个单独的程序