Начать глобус с шаблоном исключения

Я пытаюсь настроить некоторое завершение . Предположим, что у меня есть:

$ ls bar.baz foo_bar.baz foo.bar 

Если я хочу, чтобы завершение соответствовало всем файлам, которые не заканчиваются в baz:

 $ shopt|grep extglob extglob on $ compgen -G "*.!(baz)" foo.bar 

Исключительный glob работает так, как ожидалось. Но если мне нужны все файлы, которые не начинаются с foo:

 $ compgen -G "!(foo)*" bar.baz foo.bar foo_bar.baz 

Все файлы по-прежнему совпадают. Предположительно, это потому, что * может все еще расширяться, чтобы соответствовать foo . Есть ли какой-либо трюк, чтобы использовать исключение, за которым следует * ?

Как отметил Янис, исключая foo, нужно быть !(foo*) , но фактический прецедент также должен совпадать с расширением, поэтому glob должен быть в основном из формы !(foo*)*.bar (который все еще не удается исключить префиксы «foo»).

One Solution collect form web for “Начать глобус с шаблоном исключения”

Вы должны включить * в отрицание, например:

 ls !(foo*) 

Изменить (уточнить): запрошенный шаблон расширенного шаблона !(foo*) . Если используется с командой compgen вызов будет, например:

 compgen -G "!(foo*)" 

Вам нужны кавычки, чтобы передать шаблон команде compgen unpanded.

Изменить (после изменения вопроса): для вашего полного шаблона в отредактированном вопросе попробуйте один из @(!(foo*)|*bar) или @(!(bar*)|*foo) . (См. Мой комментарий ниже, если это не то, что вы ожидаете.)

  • Удалите все файлы отмены Vim во всех, кроме одного каталога
  • Почему Bash возвращает «Нет такого файла ..», когда шаблон соответствует этой строке?
  • Specifiy Unix TimeStamp Range в параметре
  • Список всех текущих файлов dotfiles с помощью zsh
  • ограничение нажатия на выбранные репозитории Mercurial с использованием принудительных команд `ssh` и` hg-ssh`
  • Как работать с `locate`?
  • Почему mv удалил файл с mv id_rsa * .old?
  • регулярное выражение в `/ bin / sh` shell
  • ImageMagick: преобразование и сохранение нескольких файлов с другим именем
  • Перечислить временные файлы по числовому значению, имеющему число больше заданного постоянно изменяющегося имени файла
  • Unix: Что произойдет, если я введу ls -d *
  • Результат ls *, ls ** и ls ***
  • Interesting Posts

    Как создать img-образ, достаточно большой для хранения одного конкретного файла?

    Что такое `libsane-v4l.so.1` и как его получить?

    как разбить многострочные записи на awk?

    Привод ext4 берет навсегда ls?

    Лучшие практики для упаковки самостоятельно созданного программного обеспечения для Debian

    Блокировка посетителей, которые получают доступ по IP-адресу сервера

    Как использовать вторичное VGA-устройство для TTY

    Таблица разделов, потребляющая 32 тыс. Данных?

    раскомментирование определенного кода в большем файле

    XFS vs Ext4 vs Others – какая файловая система стабильна и надежна для длительного запуска, например, 24/7 case

    переустановите все пакеты FreeBSD с помощью pkg_add, pkg_info

    Неподдерживаемый код ответа HTTP 429

    Создает ли Linux mvn-команда? каталог

    Использовать текущую переменную среды пользователя в файле sudoers

    Возможно ли «i3-msg focus <direction>» не обертываться, когда в данном направлении нет окна

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