2009-08-06 53 views
2

我有一个有用的小命令,通过所有文件&子目录特定字符串搜索:创建的.bashrc功能在所有文件中搜索特定字符串

find . -name "*" -exec grep -il "search term" {} \; 

我希望把它变成一个函数,我可以放入我的.bashrc并从我的shell调用,而不需要记住整个事情,但我无法得到它的工作。这是我到目前为止:

function ff() { find . -name "*" -exec grep -il [email protected] \{\} \\\; } 

任何人都可以帮忙吗? 非常感谢!

回答

4
alias ff='grep -irl' 

做同样的事情,但更简单,并停止不必要的每个文件的进程创建。

+0

看起来不错:)。为什么我在使用中发现在时间的迷雾中迷失了... - 谢谢! – 2009-08-06 14:59:43

+0

在Solaris中看起来没有grep的递归选项不起作用。在这种情况下,查找通常是一种方法。 – Jim 2009-08-06 18:20:09

2

嗯,你可以这样做:

function ff() { find . -name "*" -exec grep -il [email protected] {} ';'; } 

但这毫无意义,这不仅是因为grep -r麦克阿瑟所指出的,而是因为该条款-name "*"具有如什么都没有完全相同的效果。我会建议,如果你打算做这样的事情根本就是:

function ff() { find . -type f -exec grep -il [email protected] {} ';'; } 
2

有机会,你会喜欢ack效用。它有点像你描述的功能,功能更强大。它可以在名为“ack-grep”的Debian和Ubuntu存储库中使用。

1

找到-exec具有有限的缓冲,并在技术上是比较慢,比使用xargs的。

alias ff ='find。 | xargs grep -il'

当您搜索大量文件时效果会更好。

0

或者,您可以使用ack。如果你使用源代码控制,它将会有很大的帮助。

ack -il <term> 
    <=> 
grep -ril <term> .