2012-10-24 53 views
0

我在.bashrc中有这样的命令没有得到结果与find命令定制别名在Linux

mygrep() { 
     find /var/www/site1 -exec grep -Hn "$1" {} \; 
    } 

但有时它不是returing结果

但这个命令返回全部结果

grep -r "serch term" /var/www/site1 

以上功能有什么问题

+0

我看不出有什么差别。为什么不将-type f添加到您的查找中?你的grep是别名吗? – MeaCulpa

+0

不,grep不是别名。我会尝试-type f – user825904

+0

我发现如果我使用普通的grep,那么它甚至在字符串内搜索模式,就好像它会选择'master',如果我搜索'ast',但是我的自定义find命令只能找到'master'而不是' ast'作为匹配 – user825904

回答

2

当你的功能没有问题时un在我的Linux机器上。要使结果看起来完全相同,请将-n选项添加到grep调用:grep -rn "serch term" /var/www/site1

这就是我所做的这两个命令的输出比较上飞(在bash):

diff <(grep -rn ast /var/www/site1) <(mygrep ast)

+0

我曾尝试过,但仍然有许多关键字不在mygrep中,而是在grep中。我在该文件夹中有很多子目录。这就是原因。可能会发现不会在那些直接的节目中进行。我如何调试 – user825904

+0

在更复杂的目录树上重新运行我的测试仍然没有显示出差异。你在使用find和grep的GNU实现吗?我的'find'来自GNU findutils 4.4.2,我的'grep'是GNU grep 2.9。在某些情况下,find和grep的其他实现可能会有不同的表现。 –