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
.