Suponho que você deseja renomear o arquivo e movê-lo.
Usando meu original script como base, altere esta parte do script:
if [ "$NumFolders" -eq 1 ] ; then
mv "$ParentFolder/$FileToMove" "$TargetFolder/"
else
para algo assim:
if [ "$NumFolders" -eq 1 ] ; then
NewFileName=$(echo "$FileToMove" | sed -E -e 's/_zz[0-9]+\././')
mv "$ParentFolder/$FileToMove" "$TargetFolder/$NewFileName"
else
Traduzindo o regex para verbose inglês, o script sed substitui "a primeira ocorrência na linha de entrada de '_zz seguido por um ou mais dígitos seguidos por um literal full-stop'" com apenas um ponto final.
i.e. como a resposta de Ben, não fará a coisa certa com um arquivo que tenha duas ou mais sequências '_zz20 ...'. Fácil o suficiente para substituí-lo com o regexp do Birei (exceto se livrar da palavra 'null' entre \ 1 e \ 2, que irá substituí-lo com a string literal 'null'):
NewFileName=$(echo "$FileToMove" | sed -E -e 's/^(.*)zz[0-9]+(\.pdf)$//')
BTW, isso poderia ter sido feito com uma linha e sem a variável temporária ($ NewFileName), mas é mais fácil entender dessa maneira.