Ich muss alle Unterverzeichnisse eines Verzeichnisses auflisten, mit Ausnahme derjenigen, die mit einer Liste übereinstimmen, die als Argument angegeben wurde: "SUBDIR1, SUBDIR2, ..., SUBDIRN".
Ich kam mit der Lösung (aus vielen Quellen), ls mit einem Glob-Muster zu verwenden. Um das Konzept zu testen, habe ich in der Befehlszeile die folgende Sequenz ausprobiert, die zu funktionieren scheint:
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}')
Wenn ich es jedoch unverändert in ein Bash-Skript einfüge , wird dieser Fehler angezeigt
ls: cannot access !(subdir1|subdir2): No such file or directory
Was mache ich falsch, wenn ich diesen Code in das Skript einfüge?