Caso você queira considerar alternativas para rename
, com zsh, eu escreveria:
autoload -U zmv
zmv -n '(*).<->-<->(.[^.]##.rpm)' '$1$2'
(e remova -n
quando feliz).
Eu tenho alguns arquivos chamados
abc-10.5.3.1-1.x86_64.rpm
abc-compiler-10.5.3.1-1.x86_64.rpm
abc-10.5.3.1-6.x86_64.rpm
abc-compiler-10.5.3.1-6.x86_64.rpm
Gostaria de remover os números das versões secundárias (1-1 e 1-6) quando os arquivos são criados. Eu não consigo descobrir como conseguir isso com o comando rename no Redhat linux. O nome do arquivo resultante deve, por exemplo, ser:
abc-10.5.3.x86_64.rpm
O comando não usa expressões regulares.
Se o seu rename(1)
é algo como este do Fedora eu não acho vai trabalhar para o que você quer fazer.
Aqui está uma abordagem que requer bash
:
( shopt -s extglob
for f in ./*-+([.[:digit:]])-+([[:digit:]]).x86_64.rpm; do
mv -v -- "$f" "${f%-+([[:digit:]]).x86_64.rpm)}.x86_64.rpm"
done )
A parte +([.[:digit:]])
deve corresponder ao número da versão principal / secundária e o +([[:digit:]])
após o -
deve corresponder ao número do patch que você está tentando remover.
Você também pode fazer algo menos preciso com POSIX sh
, que não possui extglob
for f in ./*-*-*.x86_64.rpm; do
mv -v -- "$f" "${f%-*.x86_64.rpm}.x86_64.rpm"
done