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

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

alias find="find -regextype posix-egrep"

  • Как объединить '-size` и' -exec rm 'в поиске?
  • Как заставить `find` выводить полные абсолютные имена файлов?
  • find: отсутствующий аргумент для -exec
  • Найти изображения по размеру: find / file / awk
  • Сделайте «.» И «источник» по умолчанию равным ~ / .zshrc
  • Как я могу установить псевдоним bash, который оценивает $ () при запуске?
  • но это ошибка, так как путь должен идти перед выражением. Тем не менее, -regextype должен быть первым в выражениях (или перед использованием -regex или -iregex ).

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

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

  • Как найти файл с использованием нескольких шаблонов
  • Найти файлы с тем же именем, но с разными расширениями, отправить в tgz
  • Ограничение POSIX зависит от конкретной глубины?
  • Найти команду: путь к файлу vs -name Аргумент
  • Псевдоним в bashrc - не может заставить его работать
  • Поиск, подсчет и сортировка всех аудиофайлов. Файлы ALAC (M4A)
  • 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 - лучшая ОС в мире.