+
é um modificador de expressão regular estendido. sed
expressões regulares básicas por padrão.
Para fazer sed
analisar suas expressões como expressões regulares estendidas, use sed -E
. O GNU sed
também entende +
em expressões regulares básicas se você usá-lo como \+
.
Além disso, seu padrão *\-[0-9]**
parece estranho. O -
não precisa de escape (não no padrão de shell e não na expressão regular) e, a menos que você use globstar
in bash
, o padrão **
expandirá para si mesmo. Com globstar
habilitado em bash
*-[0-9]**
seria expandido para todos os nomes de caminho que contêm -N
no primeiro componente de nome de arquivo (em que N
é um dígito).
O que eu acho que você gostaria de fazer é algo assim (provavelmente não é bem assim, mas não sei como são seus nomes de arquivos):
for name in *-[0-9][0-9]*; do
newname=${name%-*}
printf 'Would rename "%s" into "%s"\n' "$name" "$newname"
# mv "$name" "$newname"
done
Isso corresponde a todos os nomes no diretório atual que contém -NN
( N
é um dígito). Ele remove tudo do último -
no nome do arquivo e renomeia o arquivo (a renomeação real é comentada).