Aqui está uma maneira:
for FILE in *bar.pdf; do
NEWNAME=$(echo $FILE | sed -En 's/(.*)bar.pdf/.pdf/p')
mv $FILE $NEWNAME
done
Explicação: Isso usa a sintaxe for-loop e o globbing de shell de bash
(correspondência de nome de arquivo baseado em curinga) para processar cada arquivo que termina em "bar.pdf". Ele pega o nome de cada arquivo e o envia para sed
. sed
é informado para lembrar a parte do nome do arquivo antes do "bar.pdf" e, em seguida, substituir o nome do arquivo pela parte lembrada, com ".pdf" anexado ao final. Esse novo nome de arquivo é armazenado como NEWNAME. Em seguida, mv
é invocado para renomear o arquivo para seu novo nome e o loop continua a processar o próximo arquivo (se houver mais arquivos correspondentes a * bar.pdf).
(Testado usando o macOS High Sierra 10.13.6's embutidos bash
e sed
. As ferramentas do seu sistema podem variar. Tenho certeza que o GNU sed
no Linux usa diferentes opções de linha de comando que o BSD sed
no macOS, portanto, verifique primeiro a sua página local sed
man.)