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

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

alias find="find -regextype posix-egrep"

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

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

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

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 .

  • Трудный рекурсивный псевдоним bash? установить при первом использовании
  • используя else, если в псевдониме bash (домашнее задание)
  • Разница между псевдонимом в zsh и псевдонимом в bash
  • Псевдоним для перечисления верхнего файла и потребления каталога - самый короткий путь?
  • Почему мой скрипт Bash не распознает псевдонимы?
  • Проверьте, используется ли слово перед сглаживанием
  • Почему я не могу назвать два псевдонима «?»?
  • Определение псевдонима и его немедленное использование
  • Изменить имя команды в Linux
  • Псевдонимы в csh
  • Bash: Как перенаправить вывод каждой команды в файл?
  • Начать новый фоновой сеанс bash
  • Linux и Unix - лучшая ОС в мире.