find 和 grep 的问题

find 和 grep 的问题

我在中定义了以下别名~/.bashrc

 alias fg='find . -name $1 | xargs grep --color $2'

为了写

fg "*.txt" " my_text "

并找到所有扩展名为 .txt 并包含“ my_text ”的文件,但它不起作用。为什么?

答案1

bash 中的别名不带参数(如前所述),因此当您需要类似的东西时,可以使用 bash 函数(如 @l0b0 提供的函数)。

但是您在这里想要实现的目标,可以通过仅使用 grep 以更好的方式完成。

grep -r --color --include="*.txt" " my_text " ./

BTW,fg是一个 shell 内置命令,很重要。您应该避免将其用作别名或函数的名称。

编辑:在函数中

$ ffg() { rgrep --color --include="$1" "$2" ./; }
$ ffg "*.txt" " my_text "

答案2

find ./ -name "$1" -exec grep -l "$2" {} \;应该可以解决问题。

答案3

这有效!

function fndg()
{
   find . -name "$1" | xargs grep -rn --color "$2"
}

相关内容