Eu tenho uma coleção de arquivos que correspondem a um padrão como 'assignment02.cc', 'assignment02.h', 'assignment02.txt' etc. etc. Gostaria de copiar / renomear esses arquivos em 'assignment03.cc', 'assignment03. h ',' assignment03.txt 'e assim por diante.
Eu suspeito que isso deve ser direto usando um script de shell e sed. Até agora eu tenho:
OLD_NO=$1
NEW_NO=$2
echo "Moving from $OLD_NO to $NEW_NO"
for name in assignment$OLD_NO.* ; do
newname=$(echo $name | sed 's/\(.*\)$OLD_NO\(.*\)/\1xx$NEW_NO\2/')
echo "$name -> $newname"
# mv -v $name $newname
done
Infelizmente, a maneira como estou invocando o sed sempre retorna a string de entrada $name
e, na verdade, não faz com que o regex encontre / substitua.
Nota: Procurando na Internet, existe um rename
comando que possui essa funcionalidade, mas que não está disponível no meu MacBook.
newname=$(echo $name | tr $OLD_NO $NEW_NO)
$OLD_NO
e$NEW_NO
não vai ficar expandida.