Dennis lhe contou por que seu roteiro está falhando, mas eu gostaria de sugerir uma maneira mais fácil (e segura) de fazer isso. Parsing ls
é quase sempre uma má idéia , ele pode facilmente quebrar nomes de arquivos com espaços ou novas linhas ou outros caracteres estranhos e não é portátil nas configurações LOCALE. Além disso, seu comando é muito complexo, envolvendo várias etapas. Por que não fazer tudo em find
?
DIR="/path/to/dirs"
EXCLUDELIST="subdir1,subdir2"
## Build the regular expression
EXCLUDE="${EXCLUDELIST//,/|.*}"
LIST=$(find "$DIR" -type d -regextype posix-awk -not -regex ".*$EXCLUDE.*")
A propósito, o seu script irá falhar à medida que você o escreve, porque você constrói o glob antes cd
-ing em $DIR
, então ele será construído em relação ao conteúdo do seu diretório atual.