我最喜欢的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的要点。你们能帮帮我吗?
谢谢
您可以使用find的求反(!)功能不匹配具有特定名称的文件:
find . ! -name '*.html' ! -path '*.svn*' -exec grep 'SearchString' {} /dev/null \;
因此,如果名称以.html结尾或在路径中的任何位置包含.svn,则该名称将不匹配,因此将不会执行该exec。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句