Supondo que os nomes dos seus arquivos não contenham :\[*?
, você ainda pode usar GLOBIGNORE
. Apenas formate sua lista de diretórios de acordo. Por exemplo:
$ cat names.txt
folder1
folder3
Isso é muito fácil de transformar em uma lista separada por dois pontos:
$ paste -s -d : names.txt
folder1:folder3
Então, agora você pode definir isso como o valor de GLOBIGNORE:
GLOBIGNORE=$(paste -s -d : ../names.txt)
E continue a eliminá-los normalmente:
rm -r -- *
Acabei de testar isso no Linux com 300 diretórios e funcionou perfeitamente.