Как псевдоним части выражения для поиска?

Я предпочитаю регулярные выражения с -regex над синтаксисом шаблона оболочки -name . Я также хочу использовать posix-egrep , поэтому я хотел бы сделать что-то вроде

alias find="find -regextype posix-egrep"

но это ошибка, так как путь должен идти перед выражением. Тем не менее, -regextype должен быть первым в выражениях (или перед использованием -regex или -iregex ).

Я просто хочу использовать псевдоним или find функцию оболочки, чтобы она работала так же, как обычно, просто готова использовать posix-regex всякий раз, когда я решаю использовать параметр -regex или -iregex .

Как я могу это сделать?

  • Почему в команде bash отсутствуют псевдонимы?
  • postfix default alias используется, даже если у меня есть другие псевдонимы
  • Как я могу «сшить» псевдонимы оболочки?
  • Псевдоним в bashrc - не может заставить его работать
  • Начать bash с помощью определенного набора псевдонимов
  • Создание команд с переменным расширением в цикле
  • Использование аргументов в заменяющем тексте псевдонима
  • псевдоним для команды, использующей !! для вызова последней команды
  • 2 Solutions collect form web for “Как псевдоним части выражения для поиска?”

    поскольку аргументы find являются позиционными, функция будет лучшим решением.

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

    так как вы хотите «перезаписать» исходную команду, вам нужно использовать полный путь find чтобы ваша новая функция не создавала бесконечный цикл вызова себя.

    используя функцию вместо псевдонима, мы можем использовать переменные позиционного аргумента ( $1-$n ). так как вы также можете добавить другие вещи в конец своей find мы добавим команду с помощью ${@:2} которая добавляет все, кроме первого аргумента (ваш путь), используя срез массива.

    Вы могли бы сделать что-то вроде:

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

    Вставить -regex-type posix-egrep перед первым вхождением -regex .

    Linux и Unix - лучшая ОС в мире.