Cómo alias parte de la expresión para encontrar?

Prefiero expresiones regulares con -regex sobre la syntax del patrón de shell -name . También quiero usar el tipo posix-egrep , así que me gustaría hacer algo como

alias find="find -regextype posix-egrep"

pero eso es un error ya que el path debe venir antes de la expresión. Sin embargo, el -regextype tiene que ser el primero en las expresiones (o antes de usar -regex o -iregex ).

Solo quiero alias o tener una function de shell para que funcione de la misma manera, siempre listo para usar posix-regex cada vez que decida usar la opción -regex o -iregex .

¿Cómo puedo hacer esto?

dado que los arguments de find son posicionales, una function sería una mejor solución.

 find(){ command find "$1" -regextype posix-egrep "${@:2}" } 

dado que desea "sobrescribir" el command original, necesita usar la ruta completa de find para que su nueva function no cree un bucle infinito de llamadas.

utilizando una function en lugar de un alias, podemos usar variables de argumento posicionales ( $1-$n ). dado que también es posible que desee agregar otras cosas al final de su find , agregamos el command con ${@:2} que anexa todo less el primer argumento (su ruta) usando el corte de matriz.

Podrías hacer algo como:

 efind() ( found=false for arg do if [ "$arg" = -regex ] && ! "$found"; then set -- "$@" -regextype posix-egrep found=true fi set -- "$@" "$arg" shift done exec find "$@" ) 

Para insert -regex-type posix-egrep antes de la primera aparición de -regex .