2009-08-06 55 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> .