如何为 find 的表达式部分添加别名?

lab*_*nth 3 find alias

我更喜欢带有-regex超过 shell 模式语法的正则表达式-name。我也想使用该posix-egrep类型,所以我想做类似的事情

alias find="find -regextype posix-egrep"

但这是一个错误,因为路径必须在表达式之前。但是,-regextype必须是表达式中的第一个(或在使用-regexor之前-iregex)。

我只是想别名或有一个 shell 函数,find以便它像往常一样工作,posix-regex只要我决定使用-regexor-iregex选项就可以使用。

我怎样才能做到这一点?

h3r*_*ler 5

由于find参数是位置性的,因此函数将是更好的解决方案。

find(){
  command find "$1" -regextype posix-egrep "${@:2}"
}
Run Code Online (Sandbox Code Playgroud)

由于您想“覆盖”原始命令,因此您需要使用 的完整路径,find以便您的新函数不会创建调用自身的无限循环。

通过使用函数而不是别名,我们可以使用位置参数变量 ( $1-$n)。因为您可能还想在您的末尾添加其他内容,所以find我们将${@:2}使用数组切片附加除第一个参数(您的路径)之外的所有参数的命令。

  • 请注意,这意味着您不能再执行 `find dir1 dir2 -name...` (2认同)