Comment alias une partie de l'expression pour find?

Je préfère les expressions régulières avec -regex sur la syntaxe du model de shell de -name . Je veux aussi utiliser le type posix-egrep , alors j'aimerais faire quelque chose comme

alias find="find -regextype posix-egrep"

mais c'est une erreur puisque le path doit venir avant l'expression. Cependant, le -regextype doit être le premier dans les expressions (ou avant d'utiliser -regex ou -iregex ).

Je veux simplement alias ou avoir une fonction shell pour que cela fonctionne comme d'habitude, juste prêt à utiliser posix-regex chaque fois que je décide d'utiliser l'option -regex ou -iregex .

Comment puis-je faire ceci?

puisque les arguments de find sont positionnels, une fonction serait une meilleure solution.

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

puisque vous voulez «écraser» la command d'origine, vous devez utiliser le path complet de find afin que votre nouvelle fonction ne crée pas une boucle infinie d'appel lui-même.

en utilisant une fonction au lieu d'un alias, nous pouvons utiliser des variables d'argument positionnelles ( $1-$n ). puisque vous voudrez peut-être append d'autres choses à la fin de votre find nous ajoutons la command avec ${@:2} qui ajoute tout le premier argument (votre path) à l'aide du découpage de tableau.

Vous pourriez faire quelque chose comme:

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

Pour insert -regex-type posix-egrep avant la première occurrence de -regex .