我有一个有用的小命令,可以搜索所有文件&特定字符串的子目录:
find . -name "*" -exec grep -il "search term" {} \;
我想把它变成一个函数,我可以放入我的.bashrc并从我的shell调用,而不需要记住整个事情,但我无法让它工作。这就是我到目前为止所做的:
function ff() { find . -name "*" -exec grep -il $@ \{\} \\\; }
有人可以帮忙吗? 非常感谢!
答案 0 :(得分:4)
alias ff='grep -irl'
执行相同的操作,但更简单,并为每个文件停止不必要的进程创建。
答案 1 :(得分:2)
嗯,你可以这样做:
function ff() { find . -name "*" -exec grep -il $@ {} ';'; }
但这是荒谬的,不仅仅是因为迈克亚瑟指出的grep -r
,而是因为-name "*"
条款与完全没有任何效果完全相同。如果你打算做这样的事情我会推荐的是:
function ff() { find . -type f -exec grep -il $@ {} ';'; }
答案 2 :(得分:2)
有可能,您需要ack实用程序。它有点像你描述的功能,更强大。它在Debian和Ubuntu存储库中可用,名称为“ack-grep”。
答案 3 :(得分:1)
find -exec具有有限的缓冲区,并且在技术上比使用xargs更慢。
alias ff ='find。 | xargs grep -il'
当您搜索大量文件时,会更好。
答案 4 :(得分:0)
试试这个:
$ ff () { find . -name "*" -exec grep -il $@ {} \;; }
答案 5 :(得分:0)
或者,您可以使用ack。如果您使用源代码管理,它会有很大帮助。
ack -il <term>
<=>
grep -ril <term> .