Мне нужно перечислить все подкаталоги каталога, кроме тех, которые соответствуют любому из списка, заданного в качестве аргумента: «SUBDIR1, SUBDIR2, ..., SUBDIRN».
Я пришел с решением (из многих источников) использования ls с шаблоном glob. Чтобы проверить концепцию, я попытался в командной строке выполнить следующую последовательность действий:
DIR="/path/to/dirs"
EXCLUDELIST="subdir1,subdir2"
#transform in a glob pattern for excluding given subdirectories
EXCLUDE="!(${EXCLUDELIST//,/|})"
LIST=$(cd $DIR && ls -l -d $EXCLUDE | grep -E "(^d)" | awk '{print $9}')
Однако, когда я помещаю его в скрипт bash неизмененным, я получаю эту ошибку
ls: cannot access !(subdir1|subdir2): No such file or directory
Что я делаю неправильно, когда помещаю этот код в скрипт?