мне нужно перечислить все подкаталоги каталога, за исключением тех, которые соответствуют любому из списка, заданного в качестве аргумента: "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 }')
однако, когда я положил его в bash-скрипт неизмененном Я получаю эту ошибку
ls: cannot access !(subdir1|subdir2): No such file or directory
что я ошибаетесь, когда вставляете этот код в скрипт?