Копировать файлы с помощью globbing (где нет совпадений), zsh

#zsh #glob

#zsh #glob

Вопрос:

В zsh командной строке я могу заставить это работать по желанию:

 cp some_dir/!(0*).jpg dest_dir/
  

и он скопирует все файлы, которые не начинаются с 0 to dest_dir .

Но когда я пытаюсь использовать то же самое из zsh скрипта, я получаю следующую ошибку:

 no matches found: some_dir/!(0*).jpg
  

В чем здесь проблема и как ее решить?

Ответ №1:

Для этой функции требуется установить параметр оболочки KSH_GLOB :

 setopt kshglob
  

Смотрите руководство по ZSH по ksh-подобным операторам Glob для получения дополнительной информации.


В качестве альтернативы, можно установить опцию EXTENDED_GLOB и использовать ^ для отрицания (частичных) шаблонов:

 setopt extendedglob
cp some_dir/(^0*).jpg dest_dir/