why is
rm -rf rev[1-9]not considering double digits?
Por que deveria? Você especificou apenas um dígito. A expressão de colchete [..] corresponde exatamente a um caractere, que deve ser um dos listados dentro dos colchetes. Portanto, rev[1-9] corresponde a nomes de arquivos do formato revN , em que N é algum dígito (exceto 0 ). Da mesma forma, rev[1-11] corresponde exatamente a rev1 , pois 1 é o único caractere especificado entre colchetes, embora seja especificado várias vezes. É o mesmo que rev[1] ou rev1 . Da mesma forma, rev[1-12] seria o mesmo que rev[12] .
Você pode usar rev[0-9]* para corresponder a todos os nomes de arquivos que começam com rev , um dígito e, em seguida, qualquer coisa, ou usando globos estendidos no Bash e no ksh, rev+([0-9]) . A subexpressão +(...) corresponde a pelo menos uma repetição do padrão entre parênteses, da mesma forma que (...)+ em expressões regulares.
Expansão de contraventamento{a..b} geraria cadeias de caracteres, não corresponderá a nomes de ficheiros, pelo que poderá utilizar rev{1..12} para gerar rev1 , rev2 , ... rev12 . Isso não leva em conta se os arquivos existem, portanto também geraria rev1 , o que não existe no seu exemplo.
A julgar pela edição, você deseja corresponder (e rm ) todos os arquivos correspondentes a rev* , exceto rev11 ? A maneira mais fácil é provavelmente renomear a exceção temporariamente (assumindo que arev11 não existe):
$ mv rev11 arev11
$ rm -r rev*
$ mv arev11 rev11
Você pode usar a expansão de chaves ...
$ rm -r rev{{1..10},12}
(Isso dará erros sobre nomes inexistentes se você definir o limite superior muito alto.)
Criar um glob que combine com números diferentes de 11 é um pouco mais complicado, possivelmente algo assim, mas é melhor verificar primeiro:
$ echo rm -r rev[0-9] rev1[02-9] rev[2-9][0-9]