我在中定义了以下别名~/.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"
}